读《C程序设计语言》笔记1
字符输入/输出(文件复制):
标准库提供的输入/输出模型非常简单。无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理。
标准库提供了一次读/写一个字符的函数,其中最简单的是getchar和putchar两个。每次调用是,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回。这种字符通常是通过键盘输入的。
一个例子:
/***************
description:
字符输入/输出:文件复制
***************/
#include <stdio.h>
void main()
{
int c;
while((c=getchar())!=EOF)
putchar(c);
}
字符在键盘、屏幕或其他任何地方无论以什么形式表现,它在机器内部都是以位模式存储的。char类型专门用于存储这种字符型数据,当然任何整型(int)也可以用于存储字符型数据。至于为什么程序中变量c定义为int型,我们接下来慢慢讲。
如何区分文件中有效数据与输入结束符的,C语言采取的解决办法是:在没有输入时,getchar函数将返回一个特殊值,这个特殊值与任何实际字符都不同。这个值成为EOF(end of file)。我们在声明变量c的时候,必须让它大到足以存放getchar函数返回的任何值。
所以这里不把c声明成char类型,是因为它必须足够大,除了能存储任何可能的字符外还要能存储文件结束符EOF。因此,将c声明成int类型。
EOF定义在头文件<stdio.h>中,是一个整型数。其具体值是什么稍后看,但要知道它与任何char类型的值都不相同。
#include <stdio.h>
void main()
{
int c;
c=EOF;
printf("%d\n",c);
system("pause");
}
运行结果如下:
于是我们知道EOF的值为-1
这次笔记记录到此