2016-09-14 6 views
0

私はCを学び始め、配列について質問があります。配列の最初のインデックスを表示すると、すべてのインデックスがCで印刷されます

ここで私は文字の2次元の単純な配列があります。

char memory[100][6]; 
... 
// populate indexes 

、ここに私は、最初の行を印刷してみてください:ここで

puts(memory[0]); 

が出力されます。なぜすべての行が印刷されますか?

00P00300P10404P1ZZZZ0000ZZ0010 

私はJavaから来ています。あなたが同じコードを実行すると、最初の行しか取得できません。私は何かが見つからないのでしょうか、あるいはCが配列をどのように扱うのでしょうか?もしそうなら、どうすれば最初の行を得ることができますか?

+0

初期化されていないため、ガベージが表示されます – BLUEPIXY

+0

出力はゴミではありません。 6文字ごとに配列要素があります。私は移入コードを隠すだけです。 – Nic

+2

'puts'は文字列を要求します。 Cの文字列は定義上、 '\ 0'(NUL)で終わる文字列です。だから、C全体のプロパティではなく、 'puts 'のプロパティとそれがどのように動作するかが定義されています。あなたが 'puts'を使うのではなく、' printf( "%c"、memory [0] [0]) 'のように他のものを使うことはしません。 – kaylum

答えて

-1

puts関数は、厳密にCスタイルの文字列です。 Cスタイルの文字列以外のものにポインタを渡すと、ゴミが出る可能性があります。どのように出力する文字数を知っていると思いますか?

+0

これは実際に私の質問の全体に答えるものではありません。なぜなら、私の配列に値でインデックスを取得する方法も不思議であるからです。 'memory [0]'のようなものです。私は他の人によって述べられているように、私は文字の配列を持っているので、 "文字列ターミネータ"はありません。 – Nic

+1

「配列で指定されたインデックスを値で取得する」という意味を理解できません。配列[2] [3]が必要な場合は、 'array [2] [3]'を使います。 'puts'を使わないでください。 –

+0

私は 'array [2] [3]'を望んでいません。私は 'array [2]'が必要です。 – Nic

関連する問題