6

配列内のヌル終了文字をチェックする方法を確認しようとしていましたchar *が、失敗しました。各要素をチェックし続けるループ手順を使用して長さを見つけることができますが、ループを使用してヌル終了文字列を見つけforたかっただけです。while私はwhileループを終了するようには見えません。これがそうである理由は何ですか?

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

4 に答える 4

24

'/0'の代わりに使用してい'\0'ます。これは正しくありません。'\0'はヌル文字ですが、'/0'は複数文字のリテラルです。

さらに、C では、条件でゼロをスキップしても問題ありません。

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

文字、整数、ポインタなどがゼロであることを確認する有効な方法です。

于 2012-08-12T02:43:03.920 に答える
14

ヌル文字は'\0'ではなく'/0'です。

while (*(forward++) != '\0')
于 2012-08-12T02:43:18.540 に答える
9

これを完全にするために: 他の人があなたの問題を解決しました:) 私はあなたに良いアドバイスをしたいと思います:車輪を再発明しないでください.

size_t forward_length = strlen(forward);
于 2012-08-12T06:17:59.010 に答える
6

あなたの'/0'はず'\0'です..スラッシュが逆になっている/間違った方向に傾いています。次のwhileようになります。

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

ただし、ここでは式の一部はオプションです。これは、ループがゼロ以外!= '\0'に評価される限り継続するためです(null はゼロと見なされ、ループを終了します)。

すべての「特殊」文字 (つまり、印刷不可能な文字のエスケープ シーケンス'\t') は、 tabや newlineなどのバックスラッシュを使用し、'\n'null でも同じである'\0'ため、覚えやすいです。

于 2012-08-12T02:43:34.897 に答える