2017-12-11 17 views
1

私の関数は、文字配列のすべての要素を画面に表示する必要があります。しかし、配列が終了したら停止する必要があります。配列のサイズは可変です。私は配列が '\ 0'で終わっていると思った。だから私はこれをした:' 0'を比較オペランドとして使用

for(int i=0; i< size; i++){ 
    if(word[i] != '\0') 
     cout<< word[i]; 
} 

しかし、プログラムはそこで停止しません。いくつかのランダムなシンボルを作成します。

など。 char number [] = "0123"
プログラムは以下を提供します:0123§&

私の条件は何ですか?

+8

を足りているだろう'\ 0'を見て停止してください。 – Incomputable

+3

これが本当にC++の場合は、 'std :: string'の使用を強くお勧めします。あなたがそのようなゴミを取得する場合は、ここで配列の終わりを歩いている。 – tadman

+0

私はここにこのリンクを残しています。 https://stackoverflow.com/a/10943040/5132337 – Siraj

答えて

5

問題は、'\0'に遭遇したときにコードが停止せず、'\0'を印刷し続けるということです。

がループ条件

for(int i=0; word[i] != '\0'; i++){ 
    cout<< word[i]; 
} 

のためにあなたを変更してみてくださいそして、あなたはちょうどそれを印刷したい場合は、シンプルな

cout<<word; 

あなたは `break`、例えばに必要

+1

'if'文の代わりにループ制限をうまく使います。 – Matt

+0

@lucauが助けてくれてうれしいです。あなたがC++を学んでいて、他の人が示唆しているように 'std :: string'を調べるなら、それは文字配列よりもずっと便利です –

関連する問題