12-fputs()函数
11.3.2 fputs() 函数
fputs() 函数是 puts() 针对文件定制的版本。它们的区别如下。
fputs()函数的第2个参数指明要写入数据的文件。如果要打印在显示器上,可以用定义在stdio.h中的stdout(标准输出)作为该参数。- 与
puts()不同,fputs()不会在输出的末尾添加换行符。
注意, gets() 丢弃输入中的换行符,但是 puts() 在输出中添加换行符。另一方面, fgets() 保留输入中的换行符, fputs() 不在输出中添加换行符。假设要编写一个循环,读取一行输入,另起一行打印出该输入。可以这样写:
char line[81];
while (gets(line)) // 与while (gets(line) != NULL)相同
puts(line);
如果 gets() 读到文件结尾会返回空指针。对空指针求值为 0 (即为假),这样便可结束循环。或者,可以这样写:
char line[81];
while (fgets(line, 81, stdin))
fputs(line, stdout);
第1个循环(使用 gets() 和 puts() 的 while 循环), line 数组中的字符串显示在下一行,因为 puts() 在字符串末尾添加了一个换行符。第2个循环(使用 fgets() 和 fputs() 的 while 循环), line 数组中的字符串也显示在下一行,因为 fgets() 把换行符存储在字符串末尾。注意,如果混合使用 fgets() 输入和 puts() 输出,每个待显示的字符串末尾就会有两个换行符。这里关键要注意: puts() 应与 gets() 配对使用, fputs() 应与 fgets() 配对使用。
我们在这里提到已被废弃的 gets() ,并不是鼓励使用它,而是为了让读者了解它的用法。如果今后遇到包含该函数的代码,不至于看不懂。