-5

私のコードのこの部分:

    char MAC_ADRESSES[MAX_LINES][100];
    for(j=i+1; j<=countlines; j++)
        {
            if((MAC_ADRESSES[j])==(MAC_ADRESSES[i]))
            {
                MAC_ADRESSES[j] = NULL;
            }

文字列を NULL に変更したい時点で、互換性のない型の割り当てに関するコンパイラ エラーが発生しました。なぜだかわからない..

4

5 に答える 5

2

おそらくMAC_ADRESSESポインターの配列ではありません。 NULL ポインター (通常(void *)0は C) であるため、ポインター以外の変数に割り当てることはできません。

編集:あなたの定義はchar MAC_ADRESSES[MAX_LINES][100]であるため、ポインターの配列ではなく、2D 配列があります。NULLこの配列には格納できません。ただし、最初のバイトにヌル文字を入れることで文字列を消去できます。

            MAC_ADRESSES[j][0] = '\0';

を使用して文字列が等しいかどうかをテストすることもできないことに注意してください==。を使用する必要がありますstrcmp

于 2013-09-11T17:57:31.127 に答える
1

NULL使用する代わりに'\0'

NULLマクロは次のように定義されています

#define NULL (void *)0

また

#define NULL 0、 従って

warning: assignment makes integer from pointer without a cast

編集した質問の使用に従って:

MAC_ADRESSES[j][0] = '\0';

于 2013-09-11T17:59:53.293 に答える
0

MAC_ADRESSESポインタ配列ではない場合は、ポインタであり、そうではないMAC_ADRESSES[j] = NULL;ため、間違ってNULLいますMAC_ADRESSES

于 2013-09-11T18:00:03.227 に答える