赋值中不兼容的类型 - C.

时间:2012-03-30 01:42:44

标签: c sorting

我正在尝试对字符串数组进行排序,但我的编译器一直在说我的作业中存在不兼容的类型。

以下是相关代码。

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

1 个答案:

答案 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]));