我正在尝试对字符串数组进行排序,但我的编译器一直在说我的作业中存在不兼容的类型。
以下是相关代码。
for(i = 0; i < 499; i++) {
max = 0;
for(j = 1; j < 500; j++) {
if(strncmp(user_id[max], user_id[j], 9) > 0) {
printf("max = %s, j = %s\n", user_id[max], user_id[j]);
temp = user_id[j];
user_id[j] = user_id[max];
user_id[max] = temp;
}
}
}
以下两行引发错误:
user_id[j] = user_id[max];
user_id[max] = temp;
为什么我收到此错误?
编辑: 对不起,我以前忘记了这个。
char user_id[500][9];
char* temp;
i j and max are int.
rover-208-149:prog3 kubiej21$ gcc --ansi --pedantic -o prog3 prog3.c
prog3.c: In function ‘main’:
prog3.c:46: error: incompatible types in assignment
prog3.c:47: error: incompatible types in assignment
答案 0 :(得分:3)
数组不能在C中赋值。因此以下内容无效:
char user_id[500][9];
user_id[23] = user_id[42]; // Error: trying to assign array
我不确定你想要达到的目标,但也许你需要memcpy
?
memcpy(user_id[23], user_id[42], sizeof(user_id[23]));