深入解读C语言中的符号常量EOF
EOF是指文件的结束符,是一个宏定义
将上述基本思想转换为C语言程序为: #include <stdio.h> /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } } 其中,关系运算符!=表示“不等于”。 c = getchar() 之类的赋值操作是一个表达式,并且具有一个值,即赋值后左边变量保存的值。也就是说, #include <stdio.h> /* copy input to output; 2nd version */ main() { int c; while ((c = getchar()) != EOF) putchar(c); } 在该程序中,while 循环语句首先读一个字符并将其赋值给c,然后测试该字符是否为文件 c = getchar() != EOF 等价于语句 c = (getchar() != EOF) 验证与打印EOF 1. 验证表达式 getchar() != EOF 的值是 0 还是 1。 #include <stdio.h> main() { int c; while(c = (getchar() != EOF)) printf("%dn",c); printf("%d - at EOFn",c); } 程序会读取字符,当有字符可读时,getchar() 不会返回文件结束符(EOF),所以 getchar() != EOF 的取值为真,变量 c 将被赋值为 1。当程序遇到文件结束符时,表达式取值为假,此时变量将被赋值为 0,程序将运行结束。 对于一个判断表达式,它的返回值会是一个布尔值。 2. 请编写一个打印 EOF 值的程序 #include <stdio.h> main() { printf("EOF is %dn",EOF); } 符号常量 EOF 是在头文件 stdio.h 中定义的,在这个程序中,printf() 语句中双引号外的 EOF 将被替换为头文件 stdio.h 中紧跟在 #define EOF 之后的文本。 在我们的系统中, EOF 被定义为 -1,但在其它系统中,EOF 可能被定义成其它的值。这正是使用 EOF 等标准符号常量能够增加程序可移植性的原因所在。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |