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函数中,通过这种操作可以结束它的阻塞。

  

  

posted @   cococo点点  阅读(298)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示
^
关注