C学习笔记12 getchar()

来源:互联网 发布:淘宝卖家常遇到的问题 编辑:程序博客网 时间:2024/04/30 12:42

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{

long nc;
nc=0;
while(getchar()!=EOF)
    ++nc;
printf("%ld/n",nc);

 

 

 return 0;
}

阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D 之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按 Ctrl+D 之前没有任何键盘输入,则 Ctrl+D 就是流结束的信号。

Windows系统中一般采用阻塞式检查 Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。

 

这个程序执行后,你随便输入一串字符 比如abcdef

他先把这些存在一个缓冲区中。当你按下回车后,GETCHAR()才开始从刚才的缓冲区中一个一个的读取字符。当这些字符读取完后,程序回等待用户继续输入新的一段字符到缓冲区。

要想得到文件尾EOF,在windows系统下是按下CTRL+Z. 而且必须在缓冲区为空的情况下,按下CTRL+Z再按下回车才会检测到EOF

原创粉丝点击