2012-03-30 36 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; 
      } 
     } 
    } 

次の2行はエラーをスロー:

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

、言うことは不可能あなたのコードスニペットは、 'user_id'または' temp'の定義が含まれていない、またあなたは、正確なエラーメッセージを掲載しているので。 –

+0

「i」、「j」、「max」、「user_id」、「temp」などの定義はどこですか?実際のエラーメッセージは何ですか? –

+0

あなたのuser_id配列と一時変数はどのような型か教えてください。あなたのコンパイラが互換性のない型であると言うなら、それはそれらが一致しないことを意味します。 – grifos

答えて

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

ええ、大丈夫です。私はそれを撃つだろう。ちょうど参考のために、私は選択ソートを作成しようとしています。 – kubiej21

関連する問題