你丫放开她 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 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi