2012-08-12 21 views
5

char *配列のヌル終端文字をチェックする方法を見てみましたが失敗しました。私は、各要素のチェックを続けるループ手順forを使用して長さを見つけることができますが、私はちょうどwhileループを使用してヌル終了文字列を探したかったのです。私はwhileループを終了することは決してありません。これがなぜそうなの?charのヌル終端文字を確認する*

char* forward = "What is up"; 
int forward_length = 0; 
while (*(forward++)!='/0') { 
    forward_length++; 
    printf("Character %d", forward_length); 
} 
+12

複数文字定数に関する警告が表示されましたか?間違ったスラッシュを使用しています。 '' \ 0 ''ではなく ''/0 ''です。 – Musa

+0

forward_lengthを宣言すると、レジスタクラスとしても役立つことがあります。 – Ram

答えて

23

あなたは'/0'代わりの'\0'使用しています。これは間違っています:'\0'はヌル文字ですが、'/0'はマルチ文字リテラルです。

また、Cであなたの状態でゼロをスキップするOKです:

while (*(forward++)) { 
    ... 
} 

はゼロであることのためなどの文字、整数、ポインタを、チェックするために有効な方法です。

14

ヌル文字は'\0'で、'/0'ではありません。

while (*(forward++) != '\0') 
6

あなた'/0''\0'する必要があります..あなたは、スラッシュは間違った方法をもたれ/逆転してしまいました。ループは限りそれは非ゼロに評価されていきますので、あなたの表現の!= '\0'一部がここにオプションですが(ヌルがゼロとみなされ、ループを終了します)

while (*(forward++)!='\0') 

:あなたのwhileは次のようになります。 。

すべての「特殊」文字(非印字文字のすなわち、escape sequences)はヌル'\0'のために、このようなタブ'\t'、または改行'\n'としてバックスラッシュ、およびそれを使用しますので、覚えやすいです。

6

他の人があなたの問題を解決しましたが、私はあなたに良いアドバイスをしたいと思います。車輪を改造しないでください

size_t forward_length = strlen(forward); 
+0

このsize_tロジックはどのように使用しますか? – vkaul11

+0

@ vkaul11「このsize_tロジックを使用する」とはどういう意味ですか? –

+0

@ H2CO3申し訳ありませんが、あらかじめ定義された関数のコードを書くことは常に良い習慣です –