web-dev-qa-db-ja.com

'\ 0'とCのprintf()

Cの入門コースで、文字列を格納するときに、文字列の最後にnull文字_\0_が格納されることを学びました。しかし、文字列を出力したい場合は、printf("hello")と言います。ただし、次のステートメントで_\0_で終わっていないことがわかりました

_printf("%d", printf("hello"));

Output: 5
_

しかし、これは一貫性がないようです。文字列のような変数がメインメモリに格納されることがわかっている限り、何かを印刷しているときにメインメモリにも格納される可能性があると思いますが、なぜ違いがあるのでしょうか。

21
iaeliyen

最初にコンセプトをクリアする必要があります。配列を処理するとクリアされるため、使用している印刷コマンドは、括弧内に配置されている文字を数えるだけです。配列文字列で\ 0で終わる必要がある

0
Muhammad Kashif

文字列は文字のベクトルです。文字列を形成する一連の文字が含まれ、その後に特殊な終了文字列が続きます: '\ 0'

例:char str [10] = {'H'、 'e'、 'l'、 'l'、 'o'、 '\ 0'};

例:次の文字ベクトルは '\ 0'で終わらないため、1つの文字列ではありません

char str [2] = {'h'、 'e'};

0
Nicola Brogelli