2012-03-30 2 views
0

Я пытаюсь сортировать массив строк, но мой компилятор продолжает говорить, что у меня есть несоответствующие типы в моем задании.Несовместимые типы в назначении - C

Ниже приведен код.

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; 

Почему это, что я получаю эту ошибку?

EDIT: Извините, я забыл включить это раньше.

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 
+2

Невозможно сказать, потому что ваш фрагмент кода не содержит определения 'user_id' или' temp', и вы не отправили точное сообщение об ошибке. –

+0

Где находятся определения 'i',' j', 'max',' user_id', 'temp' и т. Д.? Каково фактическое сообщение об ошибке? –

+0

Пожалуйста, сообщите нам, какие типы - ваш массив user_id и временная переменная. Если ваш компилятор говорит вам, что это несовместимые типы, это означает, что они не совпадают. – grifos

ответ

3

Массивы не могут быть переданы в С. Таким образом, следующее не действует:

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])); 
+0

Хм, хорошо. Я сделаю это. Просто для справки, я пытаюсь создать сортировку. – kubiej21

Смежные вопросы