stdin
これは、デフォルトではバッファリングされた入力であることがわかっています。その証拠は、次のstdin
ような「データを残す」メカニズムのいずれかを使用していることscanf()
です。
int main()
{
char c[10] = {'\0'};
scanf("%9s", c);
printf("%s, and left is: %d\n", c, getchar());
return 0;
}
./a.out
hello
hello、左は10です
10
もちろん改行です...
私はいつも興味がありますが、そこにある可能性のstdin
あるものを削除せずにバッファを「覗く」方法はありますか?
編集
より良い例は次のとおりです。
scanf("%9[^.]", c);
「at.ct」を入力すると、改行だけでなく 「data」( ct\n
)が残ります。stdin