你丫放开她 2017-07-11 13:40 采纳率: 100%
浏览 1217
已采纳

关于EOF在循环中运用的问题,谢谢了

代码如下;

 #include <stdio.h>

int main()
{
            int count = 0;
            int ch;

            while ((ch = getchar()) != EOF)
                                count++;
            printf("All of the characters is %d.\n", count);

            return 0;
}


程序目的是计算输入的字符个数,我分别输入了三种情况的数据,得到情况如下:
1、什么都不输入直接按【ctrl + D】 (Linux系统) 程序直接退出。
图片说明
2、abc【ctrl + D】【ctrl + D】程序退出。注意:这个时候我需要按两下才能退出。
3、abc【回车】这个时候光标移动到了下一行行首,我再按【ctrl + D】程序退出。
图片说明

  • 写回答

1条回答 默认 最新

  • 战在春秋 2017-07-12 01:53
    关注

    ctrl + d 只有 当缓冲区为空 时才起作用。

    第1种情况:没有输入,缓冲区为空。
    第3种情况:有输入,但按下了回车,**回车的作用就是清空缓冲区。**
    这两种情况下,按一次ctrl + d 就行。

    第2种情况:有输入,但没有按回车,此时缓冲区不为空。第一次ctrl + d清空缓冲区,第二次ctrl + d 才发送EOF。

    深入学习可以参考:
    http://blog.csdn.net/sole_cc/article/details/40383033

    如果对您有帮助,请采纳答案好吗,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)