zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    移动端web
    递归求和
    json的基础了解
    冒泡排序的编程方法
    js面向对象
    1002,javascript的原型属性
    1001,instanceof关键字以及typeof关键字
    19,简述一下src与href的区别(不懂)
    531,<form>action属性
    530,css outline属性
  • 原文地址:https://www.cnblogs.com/wz0107/p/5326701.html
Copyright © 2011-2022 走看看