stdin
は、デフォルトではバッファリングされた入力です。 10とにかく標準バッファーを覗いてもらえますか?
int main()
{
char c[10] = {'\0'};
scanf("%9s", c);
printf("%s, and left is: %d\n", c, getchar());
return 0;
}
ハロー
ハロー
./a.out、左:例えばscanf()
としてその証拠は、stdin
の「データを残す」の機構のいずれかの使用でありますもちろん、改行され
10
...
私はいつも好奇心てきた、とにかくの「のぞき見」にありstdin
そこに存在する可能性のあるものを削除せずにバッファー?
EDIT
より良い例があるかもしれない: "at.ct" の入力で
scanf("%9[^.]", c);
、今私はstdin
に残された "データ"(ct\n
)だけでなく、改行を持っています。
あなたは覗くことで 'ungetc()'することができます。十分に良い? –
@DanielFischer - それは悪くないと思います...もしキャラクターの束が残っていたら? stdinに残っているデータの長さを知ることはできますか?または1つ以上の文字をungetc()できますか? – Mike
"プッシュバックの1文字が保証されています。ストリーム上での読み込みやファイルの配置操作を介さずに' ungetc'関数を同じストリームで何度も呼び出すと、操作が失敗することがあります。通常は、複数をungetcできますが、1つしか保証されません。 –