我想使用 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);
}
}
}
我该如何解决这个问题。现在,我有一个警告
最佳答案
使用有意义的名称,例如
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];
建议重新编写代码,使您的编译器(启用所有警告)不再提示。
关于c - 我想对c中的字符数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27669227/