getchar() and putchar()
在示例中:
1 2 3 4 5 6 7 8 9 10 11 12 |
我不太明白。 putchar()会将字符放出,但为什么在EOF之后将所有字符放出,又在哪里记住所有这些字符呢? 谢谢。
这称为缓冲,由操作系统完成。通常,它会进行行缓冲,即仅将您输入到字符中的每个字符保存到内存中,然后在遇到换行符时将其全部写入文件中。这节省了资源,因为文件操作比其他操作花费更多的时间。因此,它不等待每个字符输出,而是等待一堆字符收集到缓冲区中,然后一次性全部写入。
这只是OS,您作为程序员无需担心的巧妙操作。只需将您的角色一一扔掉,然后让操作系统以自己的方式处理其余的角色。
[这不是答案,但是您不能在注释中添加代码]
我认为您的意思是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
putchar在进入enter时将char放入缓冲区,然后它将行字输出输出到屏幕。
让我们回顾一下您的代码:
1 | #include <stdio.h> |
到现在为止还挺好...
1 2 | main() { |
类型是可怜的形式,因为它默认为
这在读取代码时很容易。
继续 ...
1 2 3 | long nc; nc = 0; |
好形式。变量在使用前已初始化。
1 2 |
这有点复杂。但是一次只一步。
来自标准输入的
输入不是
因此,要退出
注意:从标准输入读取的值均未保存。计算表达式后,将丢弃每个值。
风格:我建议在每个
1 2 |
上面的语句正在打印(显示)
1 | } |
最后,
顺便说一句,您发布的示例中没有
没有地方,这段代码仅清空输入内容,并写出冲洗前剩余的角色数。
确保输入文件(stdin)中没有剩余字符