我想在c中对字符数组进行排序

时间:2014-12-27 16:34:01

标签: c arrays sorting

我想使用strcmp对数组进行排序。怎么办?

void sort(char s[100][100], int n){
int i, j, cmp;
char tmp[10];

if (n <= 1)
    return; // Already sorted

for (i = 0; i < n; i++)
{
    for (j = 0; j < n-1; j++)
    {
        cmp = strcmp(&s[i][j],&s[i][j+1]);

        if (cmp > 0)
        {
            strcpy(tmp, &s[i][j+1]);
            strcpy(&s[i][j+1],&s[i][j]);
            strcpy(&s[i][j], tmp);
        }
    }
}}

我为这种类型的数组调用函数:

int main(){

char *result[6][6];
int a=0;
    int b=1;
    for(a=0; a<5; a++){
    for(b=1;b<4;b++){
        printf("%s\n", result[a][b]);
        sort(result[a][b],6);
    }

}
}

我该如何解决这个问题。现在,我有一个警告

1 个答案:

答案 0 :(得分:1)

  1. 使用有意义的名称,例如length代替b

  2. 启用编译器警告:a=sort(result,6); ... int sort(char *a,int b){应生成警告 - 或获取新编译器。

  3. temp=a[i][j]; ... ... =temp;尝试交换指针。代码需要交换数组内容。

  4. char *result[6][6];是一个6x6指针数组。代码更像是想要使用char result[6][6];char *result[6];

  5. 建议重新编写代码,使您的编译器(启用所有警告)不再抱怨。