• C语言的EOF


    最近对C的EOF比较困惑,就查了下资料,EOF表示文件结束,stdin结束,读写错误出现。

    EOF是一个常数 -1.并不是一个字符。

    因为所有的字符的ASCII码都大于0,getchar读不到字符的时候,就返回-1了,也就是EOF.

    就先讲下stdin的EOF吧。上代码

    #include <stdio.h>
    #include <stdlib.h>
    
    void main(){
       char ch;
       while((ch=getchar())!=EOF){
                    putchar(ch);
       }
       printf("abc");
    }

    对程序输入111并按下回车(按下回车代表把输入的字符包括回车符送到buffer,getchar()和putchar()才开始执行),输出(111+换行),会出现等待输入的命令行,而不是直接输出abc。因为回车代表的是换行,而不是EOF.

    那怎么才能输出abc呢?用window的EOF就好了,也就是CTRL+Z.按了之后,又没有直接输出ABC,为啥嫩?

    因为EOF的输出,必须按回车先,再EOF,再回车,才能把abc打印出来,因为EOF是zero-length read。

    就是说EOF前面没有输入的时候,EOF才能被读取。

    参考资料:

    http://stackoverflow.com/questions/31261483/why-ctrl-z-does-not-trigger-eof
    http://stackoverflow.com/questions/4358728/end-of-file-eof-in-c
    http://stackoverflow.com/questions/5655112/why-do-i-require-multiple-eof-ctrlz-characters

  • 相关阅读:
    Android app 简单的电话拨号器
    JavaWEB开发中的/到底代表什么
    springmvc json
    ForeignKey.on_delete
    django 实现指定文件合并成压缩文件下载
    常用SQL的优化
    数据库 两个简单实用的表级优化方法
    一天只能触发一次操作
    Ajax 生成流文件下载 以及复选框的实现
    django Q和F查询
  • 原文地址:https://www.cnblogs.com/wz0107/p/5326701.html
Copyright © 2020-2023  润新知