[英]getchar() and putchar()
在示例中:
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
我不太明白。 putchar()会把角色放出来,但为什么在EOF之后它会把所有的角色都放出来,它在哪里记住所有这些角色? 谢谢。
它被称为缓冲 ,它由操作系统完成。 通常它会进行行缓冲,它只保存你在内存中放入的每个字符,然后在遇到换行符时将其全部写入文件。 这节省了资源,因为文件操作比其他操作花费更多时间。 因此,它不是对每个字符进行输出,而是等待一堆字符在缓冲区中收集并一次性写出来。
这只是操作系统所做的一个聪明的操作,你,程序员,你不必担心。 只需将角色逐一丢弃,让操作系统以自己的方式处理其余部分。
[ 这不是答案,但你不能在评论中加入代码 ]
我觉得你的意思是这样的:
#include <stdio.h>
main()
{
long nc;
nc = 0;
char c;
while ((c = getchar()) != EOF)
{
putchar(c); /* prints one char */
++nc;
}
printf("%ld\n", nc); /* prints the number of characters read */
}
不在哪里,这段代码只清空输入并写入在刷新之前剩下的多少个caracters。
这是为了确保输入文件中没有剩余的字符(stdin)
我们来看看您的代码:
#include <stdio.h>
到现在为止还挺好...
main()
{
main()
函数总是返回一个int
。 总是。 int
,但人们在阅读代码时不记得这么容易。 继续 ...
long nc;
nc = 0;
好形式。 变量在使用之前已初始化。
while (getchar() != EOF)
++nc;
这有点复杂。 但是一步一步。
getchar
函数从标准输入返回一个int
。 EOF
值与EOF
进行比较。 int
值不是EOF
,则变量nc
递增。 因此,要退出while
循环,必须从标准输入生成EOF。
注意:不保存从标准输入读取的值。 评估表达式后,将丢弃每个值。
风格 :我建议在每个while
语句后使用'{'和'}'。 这是一个安全的习惯。
printf("%ld\n", nc);
上面的语句是打印(显示) nc
的值。 nc
的值表示从标准输入读取的字符数。 这种说法不显示从标准输入任何字符。
}
最后, main
程序必须返回一个值给操作系统。 两个可移植值是EXIT_SUCCESS
和EXIT_FAILURE
,它们在stdlib.h
中定义。 指定其中一个值也是一个好习惯。
顺便说一下,你发布的例子中没有putchar
(我将其复制到这个答案中)。
当putchar进入时,putchar将char放入缓冲区,然后它会将行字输出带到屏幕上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.