C 写入文件

从上一节可以知道,在 C 语言中,如果读取文件中的数据,我们只需要以下简单的 3 步。

  1. 打开文件:使用 fopen() 函数打开文件。
  2. 读取数据:使用 fscanf()、fgets()、fread()、fgetc() 等函数从文件中读取数据。
  3. 关闭文件:使用 fclose() 函数关闭文件。

使用 fprintf() 函数写入文件

在 C 语言中,fprintf() 函数类似于 printf(),不过 fprintf() 函数是将格式化的数据写入到文件中。

语法:

int fprintf(stream, format, ...);

说明:

fscanf() 函数接收以下 3 种参数。

  • stream(FILE *):指向已打开文件的 FILE 指针
  • format(const char *):格式化字符串,表示要写入的数据类型和格式。
  • ...:可变参数列表,用于存储读取到的数据。

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 文件,可以看到内容已经被写入文件了,如下图所示。

数据成功写入文件

C写入文件示例 1

分析:

在这个例子中,我们使用 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 文件,可以看到内容已经被写入文件了,如下图所示。

字符串成功写入文件

C写入文件示例 2

分析:

在上面例子中,我们使用 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 文件,可以看到内容已经被写入文件了,如下图所示。

字符串已逐个字符写入文件

C写入文件示例 3

分析:

在这个例子中,我们使用 “for 循环 + fputc() 函数” 逐个字符地将字符串 "lvyenet" 写入到 "site.txt" 文件中。

上一篇: C 读取文件

下一篇: C 获取时间戳

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号