学习内容:
第一章
1.5 字符输入 / 输出
1.5.1 文件复制
读一个字符
while (该字符不是文件结束指示符)
输出刚读入的字符
读下一个字符
#include <stdio.h>
// copy input to output
int main()
{
int c;
c = getchar();
while (c != EOF)
{
putchar(c);
c = getchar();
}
return 0;
}
#include <stdio.h>
// copy input to output
int main()
{
int c;
while ((c = getchar() ) != EOF)
putchar(c);
return 0;
}
知识点:
putchar和printf函数可以交替调用,输出次序与调用次序一致
在没有输入时,getchar函数将返回一个特殊值,这个特殊值与任何实际字符都不同。这个值成为EOF(end of file,文件结束)。
EOF定义在头文件<stdio.h>中,是个整数型,具体什么数值并不重要,只要它与任何char类型的值都不相同即可。
不等于运算符(!=)的优先级比赋值运算符(=)的优先级高。
因此语句:
c = getchar () != EOF;
等价于语句:
c = (getchar () != EOF);
//该语句执行后,c的值将被置为0或1(取决于调用getchar函数时是否碰到文件结束标志)。
练习题:
1-6. 验证表达式 getchar() != EOF 的值是0还是1。
#include <stdio.h>
int main()
{
int c;
while (c = getchar() != EOF)
printf("%d\n", c);
return 0;
}
1-7. 编写一个打印EOF值的程序。
#include <stdio.h>
int main()
{
printf("%d\n", EOF);
return 0;
}