1

2つのchar配列があるとしましょう

char names[] = { "Jen" , "Will" , "Smith" } ;
char names2[] = {"Sam" , "Will" , "Dave"};

そして、両方の配列が共通のインデックスに共通の要素を持っているかどうかを確認したい.

私はこの方法でそれをやろうとしています

for(i = 0; i< 3; i++)
{
    if(strcmp(names[i],names2[i]) == 0)
    printf("Same");
}

しかし、「文字列が期待される場所に文字が見つかりました」というエラーが表示されます。

4

2 に答える 2

2

char []char配列、つまり文字列です。必要なのは、文字列リテラルへのポインターの配列であるため、次のようにする必要があります。

const char * names[] = { "Jen" , "Will" , "Smith" } ;
const char * names2[] = {"Sam" , "Will" , "Dave"};

その後、strcmpコードは正常にコンパイルされます。

代わりに、(文字列リテラルだけでなく) ユーザー提供の文字列を操作する必要がある場合はchar * []、大きな二次元の char 配列 ( char names [STRNUM][STRMAXLENGHT]) のいずれかを使用して動的メモリ割り当てを行う必要があることに注意してください。

于 2013-04-13T13:39:50.937 に答える
1

通常、c では文字列を char name[] として宣言します。文字列配列を作成している場合、宣言は char name[][] である必要があります。

于 2013-04-13T13:40:17.303 に答える