交换行以使数组按ascii升序排序的模块不断返回错误。
const int MAX = 10;
const int MAX_STR = 80;
void asciiOrder(char (*buffer)[MAX_STR]);
void asciiOrder(char (*buffer)[MAX_STR]) {
char * temp;
for (int i = 0; i < sizeof(buffer) / sizeof (buffer[0]) - 1; i++) {
for (int j = 1; i + j < sizeof(buffer) / sizeof(buffer[0]); j++) {
for (int k = 0; k < strlen(buffer[i]) && buffer[i][k] != NULL; k++) {
if (buffer[i][k] > buffer[i+j][k]) {
temp = buffer[i+j];
buffer[i+j] = buffer[i];
buffer[i] = temp;
break;
}
}
}
}
}
这是我从整个代码中得到的错误:
practice102.c:87:23: error: assignment to expression with array type
buffer[i+j] = buffer[i];
^
practice102.c:88:21: error: assignment to expression with array type
buffer[i] = temp;
我搜索了其他帖子,但仍然不知道为什么。 如何解决这个问题?
答案 0 :(得分:0)
C禁止在不指定两个索引的情况下分配2D数组。 你必须写类似
buffer[a][b] = buffer[c][d]
无论您的a,b,c,d是什么。
还要确保已填充和/或分配了缓冲区温度。