1
C语言程序设计
1.10.4.1 9.4.1 单字符输入输出——getc()、putc()

9.4.1 单字符输入输出——getc()、putc()

getc()和putc()函数是用于从一个打开的文件中读取一个字符或向一个打开的文件写入一个字符的函数。

从文件中读取字符的调用方式为:

  int getc(FILE*fp);

向文件写入字符的调用方式为:

  int putc(int ch,FILE*fp);

这里,fp是由fopen()打开文件时,返回的文件指针,fp指针告诉这两个函数应该从哪一个磁盘文件去读字符或写入字符。在putc()函数中,ch表示向文件中写入的字符,虽然这里定义为整型,但只使用整型数(用两个字节表示)的低位字节表示字符。

如果putc()函数操作成功,则返回写入文件的字符ASCII码,若出现错误,则返回EOF,其值定义为−1。将ch说明为整型,无论该函数操作是否成功,都返回的是一个整数(字符的ASCII码或−1),当getc()函数读到文件结尾时,该函数返回一个EOF标记。

getc(),putc()和已经介绍过的getchar(),putchar()函数其功能是相同的。实际上当getc() 和putc()函数中的文件指针为标准输入流指针stdin和标准输出流指针stdout时,getc()函数的功能与getchar()相同,putc()函数的功能与putchar()相同。这就说明getchar(),putchar()可看成是getc(),putc()的特殊情况,在stdio.h头文件中有关于这四个函数相互关系的定义。

  #define getchar() getc(stdin)

  #define putchar() putc(ch stdout)

例9-6 本程序是一个使用getc()和putc()函数将一个磁盘文件的内容按行显示在屏幕上的例子。程序使用了命令行参数,输入要显示内容的文件名称。使用条件语句,检查输入的命令行参数的个数是否正确。如果文件成功地被打开,while循环从文件中读取字符,并用putc(stdout)显示在屏上,一直读到文件结束标志“EOF”。

img680

img681

程序经编译连接而成的可执行程序为C9-6.exe,那么,执行下面的命令行:

  C:〉9-6 9-1.cpp

将在屏幕上显示出9-1.cpp程序的内容。

例9-7 下面的程序可以拷贝任何类型的文件。文件是以二进制模式打开的,使用feof()检查文件是否结束。该程序采用命令行方式运行,运行时需要在编译连接后的可执行文件的命令行参数位置上,指出拷贝的文件名和目标文件名。

下面是使用fopen()、getc()、putc()和fclose()四个函数联合进行文件处理的一个典型例子。

img682

img683

例如,要把9-6.cpp拷贝到listfile.cpp中,使用命令行:

  C:〉9-7 9-6.cpp listfile.cpp ↵