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,如需转载请自行联系原作者

相关文章
|
1月前
关于EOF与scanf的应用
关于EOF与scanf的应用
|
1月前
getchar()&putchar()函数
getchar()&putchar()函数。
10 1
|
8月前
scanf和getchar区别
scanf和getchar区别
129 0
|
6月前
|
数据安全/隐私保护
getchar、putchar以及输入缓冲区(下)
getchar、putchar以及输入缓冲区(下)
|
6月前
getchar、putchar以及输入缓冲区(上)
getchar、putchar以及输入缓冲区(上)
|
6月前
getchar() & putchar() 函数
getchar() & putchar() 函数。
111 2
|
10月前
|
数据安全/隐私保护
getchar()与putchar()函数详解
getchar与putchar其实最基本的作用就是用getchar读取一个字符,再用putchar输出一个字符
123 0
|
10月前
|
C语言
论Scanf、Gets、Getchar的区别
论Scanf、Gets、Getchar的区别
110 0
|
12月前
当后面有 fgets()/gets()/scanf() 时 scanf() 出现问题
首先让我们来考虑下面用 C 编写的简单程序。该程序使用 scanf() 读取一个整数,然后使用 fgets() 读取一个字符串。
38 0
|
12月前
C 中的 scanf() 和 fscanf() – 简单而强大
如何只读取我们需要的一部分输入?例如,考虑一些仅包含字符后跟整数或浮点数的输入流。我们只需要扫描那个整数或浮点数。
56 0