fputs
是 C 语言中用于向文件写入字符串的标准库函数。它与 puts
类似,但不会自动添加换行符,且支持向任意文件流(如磁盘文件、标准输出等)写入数据。
概念解析
- 函数原型:
int fputs(const char *str, FILE *stream);
str
:要写入的字符串(需以\0
结尾)。stream
:目标文件指针(如通过fopen
打开的文件)。- 返回值:成功时返回非负值,失败返回
EOF
。
- 特点:
- 写入字符串内容,不包含结尾的
\0
。 - 不会自动添加换行符(与
puts
不同)。
- 写入字符串内容,不包含结尾的
使用案例
1. 写入文件(覆盖模式)
#include <stdio.h>
int main() {
FILE *fp = fopen("test.txt", "w"); // 以写入模式打开文件(覆盖原有内容)
if (fp == NULL) {
perror("文件打开失败");
return 1;
}
fputs("这是第一行\n", fp); // 写入字符串并手动添加换行符
fputs("这是第二行", fp); // 不添加换行符
fclose(fp); // 关闭文件
return 0;
}
输出文件内容:
这是第一行
这是第二行
2. 追加内容到文件
#include <stdio.h>
int main() {
FILE *fp = fopen("test.txt", "a"); // 以追加模式打开文件
if (fp == NULL) {
perror("文件打开失败");
return 1;
}
fputs("\n追加的内容", fp); // 在文件末尾添加新内容
fclose(fp);
return 0;
}
追加后的文件内容:
这是第一行
这是第二行
追加的内容
3. 向标准输出写入数据
#include <stdio.h>
int main() {
fputs("Hello, 标准输出!\n", stdout); // 写入到控制台
return 0;
}
控制台输出:
Hello, 标准输出!
4. 结合循环写入多行内容
#include <stdio.h>
int main() {
FILE *fp = fopen("data.txt", "w");
if (fp == NULL) {
perror("文件打开失败");
return 1;
}
char *lines[] = {"Line 1\n", "Line 2\n", "Line 3"};
for (int i = 0; i < 3; i++) {
fputs(lines[i], fp); // 逐行写入数组内容
}
fclose(fp);
return 0;
}
生成文件内容:
Line 1
Line 2
Line 3
注意事项
- 错误检查:始终检查
fopen
和fputs
的返回值,确保文件操作成功。 - 换行控制:需手动添加
\n
控制换行。 - 文件模式:
"w"
:覆盖写入,文件不存在则创建。"a"
:追加写入,文件不存在则创建。"r+"
:读写模式(需文件已存在)。
通过灵活使用 fputs
,可以实现对文本文件的精确写入操作。