深入解读C语言中的符号常量EOF

2020-01-06 14:05:43丽君
易采站长站为您分析C语言中的符号常量EOF,文中还介绍了EOF的验证和打印方法,需要的朋友可以参考下  

EOF是指文件的结束符,是一个宏定义
    借助于getchar 与putchar 函数,可以在不了解其它输入/输出知识的情况下编写出
数量惊人的有用的代码。最简单的例子就是把输入一次一个字符地复制到输出,其基本思想
如下:

  • 读一个字符
  • while (该字符不是文件结束指示符)
  • 输出刚读入的字符
  • 读下一个字符

    将上述基本思想转换为C语言程序为:

    
    #include <stdio.h>
    /* copy input to output; 1st version */
    main()
    {
    int c;
    c = getchar();
    while (c != EOF) {
    putchar(c);
    c = getchar();
    }
    }
    

          其中,关系运算符!=表示“不等于”。
          字符在键盘、屏幕或其它的任何地方无论以什么形式表现,它在机器内部都是以位模式
    存储的。char 类型专门用于存储这种字符型数据,当然任何整型(int)也可以用于存储字
    符型数据。因为某些潜在的重要原因,我们在此使用int类型。
          这里需要解决如何区分文件中有效数据与输入结束符的问题。C语言采取的解决方法是:
    在没有输入时,getchar 函数将返回一个特殊值,这个特殊值与任何实际字符都不同。这个
    值称为EOF(end of file,文件结束)。我们在声明变量c 的时候,必须让它大到足以存
    放getchar函数返回的任何值。这里之所以不把c声明成char类型,是因为它必须足够大,
    除了能存储任何可能的字符外还要能存储文件结束符EOF。因此,我们将c声明成int类型。
    EOF 定义在头文件<stdio.h>中,是个整型数,其具体数值是什么并不重要,只要它与
    任何char类型的值都不相同即可。这里使用符号常量,可以确保程序不需要依赖于其对应的
    任何特定的数值。
           对于经验比较丰富的C 语言程序员,可以把这个字符复制程序编写得更精炼一些。在C
    语言中,类似于