getchar()和EOF

简介:

(c=getchar())!=E0F

  这个式子很熟悉,但一直都没有去理解它的原理。所以今天在网上一顿搜索,基本理解了这些问题。

1.getchar()函数:

  这个函数是以行为单位进行存储的。停止的条件是接收到回车'\n'和结束符EOF。它的返回值有正负数,当有输入时候一般返回正直,除非遇到停止的消息时候,才会返回-1,即EOF;

    while((c = getchar()) != EOF){
putchar(c);}

  在这里,getchar和putchar应该每次读入和输出一个字符,但是在终端上我们却发现情况并非如此,而是等待输入一行完成时才有输出。造成这种情况的原因是由于输入在停止前,操作系统的驱动不会通知getchar函数,控制权一直在getchar函数上,getchar函数这时处于阻塞状态,直到停止符出现,控制权才会交给putchar函数,完成输出。 

2.EOF

  EOF作为换行符,可以通知输入ctl+D来实现EOF的输入。在getchar函数中,通过这种操作可以结束它的阻塞。


本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/archive/2012/10/26/2741758.html,如需转载请自行联系原作者

相关文章
|
23天前
|
C语言
用getchar和putchar读/写字符
用getchar和putchar读/写字符
12 0
|
2月前
getchar()&putchar()函数
getchar()&putchar()函数。
18 1
|
2月前
关于EOF与scanf的应用
关于EOF与scanf的应用
|
11月前
scanf和getchar区别
scanf和getchar区别
136 0
|
9月前
getchar() & putchar() 函数
getchar() & putchar() 函数。
119 2
|
9月前
|
数据安全/隐私保护
getchar、putchar以及输入缓冲区(下)
getchar、putchar以及输入缓冲区(下)
|
9月前
getchar、putchar以及输入缓冲区(上)
getchar、putchar以及输入缓冲区(上)
|
数据安全/隐私保护
getchar()与putchar()函数详解
getchar与putchar其实最基本的作用就是用getchar读取一个字符,再用putchar输出一个字符
139 0
|
C语言
论Scanf、Gets、Getchar的区别
论Scanf、Gets、Getchar的区别
146 0
当后面有 fgets()/gets()/scanf() 时 scanf() 出现问题
首先让我们来考虑下面用 C 编写的简单程序。该程序使用 scanf() 读取一个整数,然后使用 fgets() 读取一个字符串。
45 0