2016-11-20 16 views
2

の文字列配列の最初の要素へのアクセス:それは初心者の質問であってもよいが、ここで私の問題であるかもしれないC

私は文字列の配列を宣言したいが、私は最初の要素にアクセスする際に、他の要素はそれと連結されます。私は期待していたものの

foobar 
bar 

を出力

#include <stdio.h> 
int main(){ 
    char words[2][3] = {"foo", "bar"}; 
    printf("%s\n", words[0]); // I want to print foo 
    printf("%s\n", words[1]); // I want to print bar 
} 

foo 
bar 

誰かが説明することができます:ちょうど

  1. 何が起こりましたか?
  2. 私は予想していた動作をどのように取得しますか?
+1

C- "string"の種類とその取り扱い方法を読んでください。 – alk

答えて

10

あなたの配列wordは、文字列の両端にはnullバイトのための十分なスペースを持っていない、あなたは(%sを使用して)C-文字列としての要素を印刷しようとして、それはundefined behaviourになります。配列のサイズを大きくしてください:

char words[2][4] = {"foo", "bar"}; 
関連する問題