【发布时间】:2013-12-17 23:30:25
【问题描述】:
此代码采用 5 个字符串并按升序对它们进行排序。
void swap (char data[5][255], int i, int j) {
char temp[255];
strcpy(temp,data[i]);
strcpy(data[i],data[j]);
strcpy(data[j],temp);
}
void sort (char data[5][255], int n) {
// * : first address contact
int i, j;
for(i = 0; i < n-1; i++)
for( j = i+1; j > 0; j--)
if(strcmp(data[j-1],data[j])>0)
{
printf("%s",data[j-1]);
swap(data, j-1, j);
}
}
int main() {
char strings[5][255];
char comp[255];
int i, n;
n = sizeof(strings)/sizeof(comp);
printf("Enter 5 strings, max 255 chars each:\n");
for(i=0; i < n; i++)
scanf("%s",strings[i]);
sort(strings, n);
printf("Sorted data:\n");
for(i=0; i < n-1; i++)
printf("%s, ",strings[i]);
printf("%s.\n",strings[i]);
return 0;
}
除此之外,我怎样才能解析我的静态数组 string[5][255] 以使用指针来运行? 例如,我尝试过,
void sort ( char **data, int i ) { ... }
但它会抛出这样的错误。
incompatible pointer types passing 'char [5][255]' to parameter of type 'char **'
有什么我可以使用指针解析我的数组的吗?
由于数组被解析为函数它的第一个地址(指针),我认为函数会接受这些表达式。请给我一些建议以便理解。
【问题讨论】:
-
为什么**数据不起作用?不像 char *data[255],Jekyll?