3.0 KiB
C 中的fputs()函数
原文:https://overiq.com/c-programming-101/fputs-function-in-c/
最后更新于 2020 年 7 月 27 日
fputs()函数的语法是:
语法: int fputc(const char *str, FILE *fp);
该函数用于将字符串打印到文件中。它接受指向字符串和文件指针的两个参数。它将由str指向的空终止字符串写入文件。空字符不会写入文件。成功后,返回0。出错时,返回EOF或-1。
下面的程序演示了如何使用fputs()功能。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[50];
FILE *fp;
fp = fopen("myfile2.txt", "w");
if(fp == NULL)
{
printf("Error opening file\n");
exit(1);
}
printf("Testing fputs() function: \n\n");
printf("To stop reading press Ctrl+Z in windows and Ctrl+D in Linux :");
while( gets(str) != NULL )
{
fputs(str, fp);
}
fclose(fp);
return 0;
}
预期输出:
Testing fputs() function:
To stop reading press Ctrl+Z in windows and Ctrl+D in Linux :
The first line
The second line
Third line
^D
工作原理:
在第 6 行,声明了一个大小为50的字符数组str。
在第 7 行,声明了类型为struct FILE的结构指针变量fp。
在第 8 行中,fopen()函数用两个参数调用,即"myfile2.txt"和"w"。成功后,它返回一个指向文件myfile2.txt的指针,并以只写模式打开文件myfile.txt。失败或文件结束时,返回NULL。
第 10-14 行,if 语句用于测试fp的值。如果是NULL,printf()语句打印错误信息,程序终止。否则,程序继续执行 if 语句后面的语句。
在第 16 行和第 17 行,两个printf()语句将"Testing fputs() function: \n\n"和"To stop reading press Ctrl+Z in windows and Ctrl+D in Linux : \n\n"串到控制台。
在第 19-22 行,我们有 while 循环和gets()函数。while 循环将继续请求更多的字符串,直到它计数一个文件结束字符。关于 get()函数,需要记住两件重要的事情:
gets()函数将输入的换行符转换为空字符('\0')。- 当遇到文件结束字符时
gets()返回NULL。
以下是 while 循环的工作原理:
当输入第一行"The first line"后接换行符时,gets()函数将换行符('\n')转换为空字符('\0')。此时,str包含"The first line\0",然后写入文件。然后使用fputs()功能将字符串写入文件。需要注意的是fputs()函数不会将空字符'\0'写入文件。当gets()函数遇到文件结束字符时,while 条件变为假,控制退出循环。
在第 24 行,fclose()函数关闭文件指针。
put()和 fputs()之间的差异
回想一下,在前面的章节中,我们已经多次使用puts()函数将字符串打印到控制台上。fputs()和puts()的重要区别在于puts()将字符串中的空字符('\0')转换为换行符('\n'),而fputs()则没有。