0

重複の可能性:
fgetsによるキャリッジリターン

私はこのコードを持っています:

char arch[80];
fgets (arch, sizeof(arch), stdin); 

その値にアクセスすると、arch入力した値のstdin後に疑問符が表示されますが、なぜこれが発生するのですか?

4

2 に答える 2

4

fgets()末尾の改行を格納します:

fgets()は、ストリームから最大で1つ小さいサイズの文字を読み込み、sが指すバッファーにそれらを格納します。EOFまたは改行の後で読み取りが停止します。改行が読み取られると、バッファに格納されます。'\ 0'は、バッファの最後の文字の後に格納されます。

ある種のデバッガーで変数を検査している場合、改行が「?」または「疑問符」の意味で表示される可能性があります。

于 2012-10-23T13:05:27.737 に答える
3

私の推測では、これは\n、の値を調べるために使用するすべてのラインターミネータを表していると思いますarch。SOには回線の終端に関して多くの質問がありますが、それに対処するためのいくつかの方法を簡単に見つけることができると確信しています。

于 2012-10-23T13:05:04.977 に答える