文章目录

  • 一、fscanf 函数
  • 二、fprintf 函数

一、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

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

​使用 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

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

​读取指定格式的字符串 :​ 读取 "%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

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

二、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 固定文本输出到文件中 ;

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

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

#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

【C 语言】文件操作 (fscanf、fprintf 函数)_原力计划_05

代码示例 ( 输出格式化文本 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

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