我正在学习C并且有一些问题。请看下面的图片:
阅读高亮文字时,我很困惑。是这样的:当用户开始输入一些输入时,输入直接放在缓冲区中。当按下Enter键('\ n')时,程序从缓冲区读取并获取输入,然后清除缓冲区?
如果是,假设在程序中,我使用:scanf("%d", &a_variable)
然后输入 123astring ,然后从缓冲区读取 123 并清除。那么,在缓冲区中现在包含“ astring ”?
我是对的吗?或者我误解了什么?
答案 0 :(得分:3)
确实有两个缓冲区。 第一个是他们正在谈论的那个。它允许用户输入内容,然后删除等,而程序没有看到任何内容。 第二个缓冲区将保留剩余的“astring”。
考虑它的好方法是按下Enter时第一个缓冲区传递给第二个缓冲区。 scanf读取第二个缓冲区。如果它是空的,程序会等待。
第二个缓冲区几乎总是存在。如果不是,那么即使在'unbuffered'的情况下,你也必须在用户键入时完全运行scanf。