从上一节可以知道,在 C 语言中,如果读取文件中的数据,我们只需要以下简单的 3 步。
- 打开文件:使用 fopen() 函数打开文件。
- 读取数据:使用 fscanf()、fgets()、fread()、fgetc() 等函数从文件中读取数据。
- 关闭文件:使用 fclose() 函数关闭文件。
使用 fprintf() 函数写入文件
在 C 语言中,fprintf() 函数类似于 printf(),不过 fprintf() 函数是将格式化的数据写入到文件中。
语法:
int fprintf(stream, format, ...);说明:
fscanf() 函数接收以下 3 种参数。
fprintf() 函数会返回成功写入的字符个数。如果在写入过程中发生错误,则会返回一个负值。
示例 1:使用 fprintf() 写入格式化数据到文件
#include <stdio.h>
int main(void)
{
FILE *fp;
char* name = "阿莫";
int age = 20;
float salary = 5000.0;
fp = fopen("./files/info.txt", "w");
if (fp == NULL)
{
printf("无法打开文件");
return 1;
}
// 将格式化的数据写入文件
int result = fprintf(fp, "姓名:%s,年龄:%d,薪资:%f\n", name, age, salary);
if (result > 0)
{
printf("数据成功写入文件");
}
else
{
printf("写入文件失败");
}
fclose(fp);
return 0;
}运行结果如下。然后我们打开 files/info.txt 文件,可以看到内容已经被写入文件了,如下图所示。
数据成功写入文件
分析:
在这个例子中,我们使用 fprintf() 函数将姓名、年龄和薪资等格式化数据写入到名为 "info.txt" 的文件中。格式化字符串 "姓名:%s,年龄:%d,薪资:%f\n" 指定了要写入的数据类型和格式。
注意: 使用 "w" 模式打开文件时,如果文件已存在,其内容会被清空。如果希望在文件末尾追加新内容而不覆盖原有内容,我们应该使用 "a" (append) 模式。
使用 fputs() 函数写入字符串
在 C 语言中,我们可以使用 fputs() 函数来将一个字符串写入到文件中。
语法:
int fputs(str, stream);说明:
fputs() 函数接收以下 2 个参数。
str(const char *):要写入的字符串的指针。stream(FILE *):已打开文件的 FILE 指针。
如果写入成功,fputs() 函数会返回一个非负值。如果发生错误,则会返回 EOF。
注意: fputs() 不会自动在字符串末尾添加换行符,如果需要换行,需要在字符串末尾手动添加 “\n” 。
示例 2:使用 fputs() 写入多行字符串到文件
#include <stdio.h>
int main(void)
{
FILE* fp;
char* line1 = "这是第一行文本。\n";
char* line2 = "这是第二行文本。\n";
char* line3 = "这是第三行文本。\n";
fp = fopen("./files/lines.txt", "w");
if (fp == NULL)
{
printf("无法打开文件");
return 1;
}
// 写入第一行
if (fputs(line1, fp) == EOF)
{
printf("写入第一行失败");
}
// 写入第二行
if (fputs(line2, fp) == EOF)
{
printf("写入第二行失败");
}
// 写入第二行
if (fputs(line3, fp) == EOF)
{
printf("写入第三行失败");
}
printf("字符串成功写入文件");
fclose(fp);
return 0;
}运行结果如下。然后我们打开 files/lines.txt 文件,可以看到内容已经被写入文件了,如下图所示。
字符串成功写入文件
分析:
在上面例子中,我们使用 fputs() 函数将 3 个字符串分别写入到 "lines.txt" 文件中。我们在每个字符串的末尾添加了换行符 “\n” ,以便在文件中形成多行文本。
使用 fputc() 函数写入单个字符
在 C 语言中,我们可以使用 fputc() 函数来将一个字符写入到文件中。
语法:
int fputc(c, stream);说明:
fputc() 函数接收以下 2 个参数。
c(int):要写入的字符(以 int 类型传递)。stream(FILE *):已打开文件的 FILE 指针。
fputc() 函数会返回写入的字符。如果发生错误,则会返回 EOF。
示例 3:使用 fputc() 逐个字符写入文件
#include <stdio.h>
int main(void)
{
FILE* fp;
int i;
char* text = "lvyenet";
// 打开文件以写入文本
fp = fopen("./files/site.txt", "w");
if (fp == NULL)
{
perror("无法打开文件");
return 1;
}
// 逐个字符写入文件
for (i = 0; text[i] != '\0'; i++)
{
if (fputc(text[i], fp) == EOF)
{
printf("写入字符失败");
break;
}
}
printf("字符串已逐个字符写入文件");
fclose(fp);
return 0;
}运行结果如下。然后我们打开 ./files/site.txt 文件,可以看到内容已经被写入文件了,如下图所示。
字符串已逐个字符写入文件
分析:
在这个例子中,我们使用 “for 循环 + fputc() 函数” 逐个字符地将字符串 "lvyenet" 写入到 "site.txt" 文件中。
