我想使用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);
}
}
}
我该如何解决这个问题。现在,我有一个警告
答案 0 :(得分:1)
使用有意义的名称,例如length
代替b
。
启用编译器警告:a=sort(result,6); ... int sort(char *a,int b){
应生成警告 - 或获取新编译器。
temp=a[i][j]; ... ... =temp;
尝试交换指针。代码需要交换数组内容。
char *result[6][6];
是一个6x6指针数组。代码更像是想要使用char result[6][6];
或char *result[6];
建议重新编写代码,使您的编译器(启用所有警告)不再抱怨。