字符串数组定义哪里错了



#include 
#include 
int subString(char *str,char *sub);
int subString(char *str,char *sub)
{
    int count = 0, i, j;
    for (i = 0; i < strlen(str); i++) {
        for (j = 0; j < strlen(sub); j++) {
            if(str[i + j] != sub[j]) {
                break;
            }
        }
        if (j == strlen(sub)) {
            count++;
        }
    }
    return count;
}

int main(void)
{
    char str[5000];
    char temp1[5]={'\0'};
    int temp2=0;
    gets(str);
    char str1[27][4]={"00","aa","bb","cc"."dd","ee","ff"."gg","hh","ii","jj","kk",
                      "ll","mm","oo","pp","qq","rr","ss","tt",
                      "uu","vv","ww","xx","yy","zz"};
//哪里错了??
    int array[27]={0};
    for(int i=0;i<27;i++)
    {
        array[i]=subString(str,str1[i]);
    }
    for(int i=0;i<27;i++)//冒泡排序
    {
        for(int j=0;j<27-i-1;j++)
        {
            if(array[j+1]>array[j])
            {
                temp2=array[j];
                array[j]=array[j+1];
                array[j+1]=temp2;
                strncpy(temp1,str1[j],2);
                strncpy(str1[j],str1[j+1],2);
                strncpy(str1[j+1],temp1,2);
            }

        }
    }
    for(int i=0;i<27;i++)
    {
        if(array[i])
            printf("%s",str1[i]);
    }

    return 0;
}

img