2012-03-24 4 views
0

に印刷最後のエントリを保持します、私が入力した場合:

はい
なし

それは印刷になります。文字列配列は、私は5つの文字列を入力し、コードを実行すると、それは文字列を出力し、なぜ私はかなり[0]最後の文字列として私が入ることを理解していないC


チェックはい
はい
はいを210
チェックなし
なし
なし

も、インデックスのため= 0

int main(void) { 
    char *string[5]; 
    char entered[11]; 
    for(int j = 0; j < 5; j++) { 
    scanf("%s", &entered); 
    string[j] = entered; 
    printf("Check %s\n",entered);  
    printf("%s\n",string[j]); 
    printf("%s\n",string[0]); 
     } 
    return 0; 
} 

私の意図は、配列に各文字列エントリを保存することです。

だから私の例えば、私がしたい:


チェックはい
はい
はい が
チェックなし

はい

私はmalloc関数を使用することはできないわけではありません。 ..等。

+0

警告レベルを上げますあなたのコンパイラのel、**警告を気にしてください**。 – pmg

答えて

2

このライン:

 string[j] = entered; 

enteredからstring[j]に文字をコピーしません。むしろ、配列enteredのメモリ位置を示すようにstring[j]を設定します。

あなたが(例えば)書くことによって、あなたの string配列内の文字列のメモリを割り当てる必要が

char string[5][11]; 

代わりの

char *string[5]; 

、その後、あなたがstring[j]からenteredから文字をコピーする必要があります書込み(例:

 strcmp(string[j], entered); 
関連する問題