前面已叙述, stdout、 stdin均是系统定义的文件指针变量,它们与终端输出相连 putc(c, stdout)的作用是将c的值输出到终端。用宏 putchar(e)比写 fputc(e, stdout)简单 些。从用户的角度,可以把 putchar(c)看作函数而不必严格地称它为宏 fgetc函数——从指定文件读入一个字符。该文件必须是以读或读写方式打开的。调 用形式为:ch= fgetc(fp): 其中,fp为文件型指针变量,ch为字符变量。 fgetc函数带回一个字符,赋给ch 如果基执行 fgetc读字符时遇到文件结束符,函数返回一个文件结束标志EOF,EOF在 stdio. h中定义 1。如果想从一个磁盘文件顺序读入字符并在屏幕上显示出来,可以: ch=fgetc(fp) hile(ch!=EOF) Tchar(ch) ch=fgetc(fp) exit o函数的功能是:终止程序执行,关闭文件并返回DOs,它定义在 stdio.h中 注意:EOF不是可输出字符,因此不能在屏幕上显示。由于字符的 ASCII码不可能出 1,因此EF定义为-1是合适的。当读入的字符值等于-1(即EOF)时,表示读入的已不是正常的 符而是文件结束符。但以上只适用于读文本文件的情况。现在 ANSI C已允许用缓冲文件系统处理二 制文件,而读入某一个字节中的二进制数据的值有可能是-1,而这又恰好是EOF 就出现了 需要读入有用数据而却被处理为“文件结束”的情况。为了解这个总是, ANSI C 个feof函数来 断文件是否真的结束 feof(fp)用来测试fp所指向的文件当前状态是否“文件结束”。如果是文件结 束,函数feof(fp)的值为1,否则为0。如果想顺序读入一个二进制文件中的数据,可以用 while(!feof(fp)) f c=fgetc(fp) 当遇文件结束,feof(fp)的值为0,!feof(fp)的值为1,读入一个字节的数据赋 给整型变量c(当然可以接着对这些数据进行所需的处理)。直到遇到文件结束,feof(fp)值为1,不 执行 while循环 这种方法也适用于文本文件 、文件的定位前面已叙述,stdout、stdin 均是系统定义的文件指针变量,它们与终端输出相连。 fputc(c,stdout)的作用是将 c 的值输出到终端。用宏 putchar(c)比写 fputc(c,stdout)简单 一些。从用户的角度,可以把 putchar(c)看作函数而不必严格地称它为宏。 fgetc 函数──从指定文件读入一个字符。该文件必须是以读或读写方式打开的。调 用形式为:ch=fgetc(fp); 其中,fp 为文件型指针变量,ch 为字符变量。fgetc 函数带回一个字符,赋给 ch。 如果基执行 fgetc 读字符时遇到文件结束符,函数返回一个文件结束标志 EOF,EOF 在 stdio.h 中定义 为-1。如果想从一个磁盘文件顺序读入字符并在屏幕上显示出来,可以: ch=fgetc(fp); while (ch!=EOF) { putchar(ch); ch=fgetc(fp); } exit()函数的功能是:终止程序执行,关闭文件并返回 DOS,它定义在 stdio.h 中。 注意:EOF 不是可输出字符,因此不能在屏幕上显示。由于字符的 ASCII 码不可能出 现-1,因此 EOF 定义为-1 是合适的。当读入的字符值等于-1(即 EOF)时,表示读入的已不是正常的 字符而是文件结束符。但以上只适用于读文本文件的情况。现在 ANSI C 已允许用缓冲文件系统处理二 进制文件,而读入某一个字节中的二进制数据的值有可能是-1,而这又恰好是 EOF 的值。这就出现了 需要读入有用数据而却被处理为“文件结束”的情况。为了解这个总是,ANSI C 提供一个 feof 函数来 判断文件是否真的结束。 feof(fp)用来测试 fp 所指向的文件当前状态是否“文件结束”。如果是文件结 束,函数 feof(fp)的值为 1,否则为 0。如果想顺序读入一个二进制文件中的数据,可以用: while (!feof(fp)) { c=fgetc(fp); …… } 当遇文件结束,feof(fp)的值为 0,!feof(fp)的值为 1,读入一个字节的数据赋 给整型变量 c(当然可以接着对这些数据进行所需的处理)。直到遇到文件结束,feof(fp)值为 1,不 再执行 while 循环。 这种方法也适用于文本文件。 二、文件的定位