【C 语言】文件操作 (fscanf、fprintf 函数)

142 篇文章 96 订阅





一、fscanf 函数



fscanf 遇到空格 , 回车 会断开 , fgets 遇到回车会断开 ;

fscanf 函数作用 : 根据数据格式 const char * format , 从文件 FILE * stream 中 , 读取数据存储到 [argument...] 参数中 ;

fscanf 函数原型 :

 int fscanf(FILE * stream, const char * format, [argument...]);

使用 fgets 从文件中获取数据 ( 用作对比参照 ) :

#include <stdio.h>

int main()
{
    FILE *p = fopen("D:\\a.txt", "r");
    while (!feof(p)){
        char buffer[100] = {0};
        fgets(buffer, sizeof(buffer), p);
        printf("%s\n", buffer);
    }

    // 关闭文件
    fclose(p);
    printf("Main End\n");
    return 0;
}

输出 :

13 + 5 = 18

在这里插入图片描述


使用 fscanf 函数从文件中获取数据 : 此处读取的数据格式是 “%s” , 遇到空格或回车 , 就当做一个新的字符串进行处理 ;

#include <stdio.h>

int main()
{
    FILE *p = fopen("D:\\a.txt", "r");
    while (!feof(p)){
        char buffer[100] = {0};
        //fgets(buffer, sizeof(buffer), p);

        // fscanf 与 scanf 用法一致
        // fscanf 是从文件中读取 , scanf 是从命令行读取
        fscanf(p, "%s", buffer);
        printf("%s\n", buffer);
    }

    // 关闭文件
    fclose(p);
    printf("Main End\n");
    return 0;
}

执行结果 : fscanf 函数将 空格 也当做了换行 ;

输出

13
+
5
=
18
Main End

在这里插入图片描述


读取指定格式的字符串 : 读取 "%d + %d = %d" 格式的字符串 , 将其中的整型变量 , 输出到 a, b, c 变量中 ;

#include <stdio.h>

int main()
{
    FILE *p = fopen("D:\\a.txt", "r");
    while (!feof(p)){
        char buffer[100] = {0};
        //fgets(buffer, sizeof(buffer), p);

        int a, b, c;
        // fscanf 与 scanf 用法一致
        // fscanf 是从文件中读取 , scanf 是从命令行读取
        fscanf(p, "%d + %d = %d", &a, &b, &c);
        printf("a=%d , b=%d , c=%d\n",  a, b, c);
    }

    // 关闭文件
    fclose(p);
    printf("Main End\n");
    return 0;
}

执行结果 :

a=13 , b=5 , c=18
Main End

在这里插入图片描述





二、fprintf 函数



fprintf 函数用于向文件中输出格式化文本 ;

该函数类似于 printf 函数 , 只是 printf 函数将文本打印到命令行窗口中 , fprintf 将文本输出到文件中 ;

fprintf 函数原型 :

int fprintf (FILE* stream, const char*format, [argument])

FILE* stream 参数 : 文件指针 ;

const char*format 参数 : 要写入的文本格式 ;

[argument] 参数 : 文本格式对应的若干参数 , 这是个可变参数 ;


代码示例 ( 输出固定文本 ) : 与 fputs 类似 ;

#include <stdio.h>

int main()
{
    FILE *p = fopen("D:\\a.txt", "w");

    char buffer[100] = "10 + 3 = 13";
    // 输出文本到文件
    fprintf(p, "%s\n", buffer);

    // 关闭文件
    fclose(p);
    printf("Main End\n");
    return 0;
}

输出结果 : 将 10 + 3 = 13 固定文本输出到文件中 ;

在这里插入图片描述


代码示例 ( 输出格式化文本 ) :

#include <stdio.h>

int main()
{
    FILE *p = fopen("D:\\a.txt", "w");

    char buffer[100] = {0};
    int a = 10, b = 3, c = 13;
    // 格式化输出文本到文件
    fprintf(p, "%d + %d = %d", a, b, c);

    // 关闭文件
    fclose(p);
    printf("Main End\n");
    return 0;
}

输出文件内容 :

10 + 3 = 13

在这里插入图片描述


代码示例 ( 输出格式化文本 2 ) :

#include <stdio.h>

int main()
{
    FILE *p = fopen("D:\\a.txt", "w");

    char array[6] = {0, 1, 2, 3, 4, 5};
    int i = 0;
    for (i = 0; i < 6; i++){
        // 输出格式化文本到文件
        fprintf(p, "array[%d] = %d\n", i, array[i]);
    }

    // 关闭文件
    fclose(p);
    printf("Main End\n");
    return 0;
}

输出结果 :

array[0] = 0
array[1] = 1
array[2] = 2
array[3] = 3
array[4] = 4
array[5] = 5

在这里插入图片描述

f和fprintf是C语言中用于文件操作函数fscanf函数用于从文件中读取格式化数据。它的语法如下: ```c int fscanf(FILE *stream, const char *format, ...); ``` 其中,stream是一个指向FILE类型对象的指针,表示要读取的文件流;format是一个字符串,指定了要读取的数据的格式;...表示要读取的数据将按照format指定的格式存储到后续的变量中。fscanf函数会根据format字符串中的格式说明符从文件中读取数据,并将数据赋值给相应的变量。 例如,我们可以使用fscanf从一个名为input.txt的文件中读取两个整数,并将它们存储到两个变量中: ```c #include <stdio.h> int main() { FILE *file = fopen("input.txt", "r"); int num1, num2; if (file != NULL) { fscanf(file, "%d %d", &num1, &num2); fclose(file); printf("Read numbers: %d, %d\n", num1, num2); } else { printf("Failed to open file.\n"); } return 0; } ``` fprintf函数用于将格式化数据写入文件。它的语法如下: ```c int fprintf(FILE *stream, const char *format, ...); ``` 其中,stream是一个指向FILE类型对象的指针,表示要写入的文件流;format是一个字符串,指定了要写入的数据的格式;...表示要写入的数据将按照format指定的格式从后续的变量中获取。fprintf函数会根据format字符串中的格式说明符将数据格式化并写入文件。 例如,我们可以使用fprintf将两个整数写入一个名为output.txt的文件中: ```c #include <stdio.h> int main() { FILE *file = fopen("output.txt", "w"); int num1 = 10, num2 = 20; if (file != NULL) { fprintf(file, "Numbers: %d, %d\n", num1, num2); fclose(file); printf("Data written to file.\n"); } else { printf("Failed to open file.\n"); } return 0; } ``` 以上是关于fscanf和fprintf函数的简单介绍,希望能对你有所帮助。如果你还有其他问题,请继续提问!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值