1
C语言程序设计
1.10.4.2 9.4.2 行输入输出——fgets()、fputs()

9.4.2 行输入输出——fgets()、fputs()

fgets()和fputs()是用来从文件中读出字符串,或向文件中写字符串的函数,其调用方式是:

  char*fgets(char*str,int length,FILE*fp);

  char*fputs(char*str,FILE*fp);

函数fgets()从fp指向的文件读出字符串,一直读至换行符或第(length−1)个字符为止,如果读入换行符,它将作为字符串的一部分,且以空字符NULL结束。如果读成功,函数返回一指向所读字符串的指针,否则返回一空指针。

fputs()与putc()函数,在功能上几乎完全一样,只是它用来向指定的文件写字符串而不是写一个字符。操作成功时,fputs()返回0,失败则返回非0值。

例9-8是说明fgets()函数用法的例子。和前面例子一样,本程序也使用了命令行参数并进行命令行参数校验。程序将一个指定的行文件显示在显示屏上并计算文件的行数。程序将fgets()函数读出的字符串放入数组line[size]中,size被定义为80,因此每行最多能读出79个字符。变量row计算文件的行数,每读一个串,row自增1,并将row表示的行数显示在每行的开始位置,后接该行字符串的内容。实际上该程序相当于DOS中一个带行号的TYPE命令。

例9-8 说明fgets()函数用法的程序。

img684

img685

如果在运行该程序时将9-4.cpp作为命令行参数:

  C:〉9-8 9-4.cpp

则程序运行结果是:

  1:// 9-4.cpp

  2:#include 〈stdio.h〉

  3:#define MAXLEN 81

  4:

  5:main()

  6:{

  7:char message[MAXLEN];

  8:

  9:puts("Enter your message :");

  10:gets(message);

  11:puts("your message is :");

  12:puts(message);

  13:}