17-fgets()和fputs()函数
13.4.2 fgets()
和 fputs()
函数
第11章时介绍过 fgets()
函数。它的第1个参数和 gets()
函数一样,也是表示存储输入位置的地址( char
* 类型);第2个参数是一个整数,表示待输入字符串的大小[1];最后一个参数是文件指针,指定待读取的文件。下面是一个调用该函数的例子:
fgets(buf, STLEN, fp);
这里, buf
是 char
类型数组的名称, STLEN
是字符串的大小, fp
是指向 FILE
的指针。
fgets()
函数读取输入直到第1个换行符的后面,或读到文件结尾,或者读取 STLEN-1
个字符(以上面的 fgets()
为例)。然后, fgets()
在末尾添加一个空字符使之成为一个字符串。字符串的大小是其字符数加上一个空字符。如果 fgets()
在读到字符上限之前已读完一整行,它会把表示行结尾的换行符放在空字符前面。 fgets()
函数在遇到 EOF
时将返回 NULL
值,可以利用这一机制检查是否到达文件结尾;如果未遇到 EOF
则返回之前传给它的第一个参数地址。
fputs()
函数接受两个参数:第1个是字符串的地址;第2个是文件指针。该函数把根据传入地址找到的字符串写入指定的文件中。和 puts()
函数不同, fputs()
在打印字符串时不会在其末尾添加换行符。下面是一个调用该函数的例子:
fputs(buf, fp);
这里, buf
是字符串的地址, fp
用于指定目标文件。
由于 fgets()
保留了换行符, fputs()
就不会再添加换行符,它们配合得非常好。如第11章的程序清单11.8所示,即使输入行比 STLEN
长,这两个函数依然处理得很好。