自学内容网 自学内容网

5. fprintf和fscanf的使用 -- 以指定格式写入 / 读取文件中内容

1. 说明

项目中有时会需要从某个文件中保存或者读取指定的配置内容,而且在文件中一般是按照实现指定好的格式进行保存的。那么,在linux系统中提供了两个比较有用的函数,可以很方便的实现文件中固定格式的内容读写操作,分别是fprintffscanf

2. 简单实用

2.1 fprintf

这个函数可以根据打开的文件描述符,在文件中写入指定格式的内容,具体用法请看下面的代码:

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <unistd.h>
  4 #include <sys/types.h>
  5 #include <iostream>
  6 #include <string>
  7 
  8 int main()
  9 {
 14     FILE* fd = fopen("./test.txt", "w+");
 15 
 16     if(NULL == fd)
 17     {
 18         std::cout << "fopen failed..." << std::endl;
 19     }
 20     else
 21     {
 22         //write data 
 23         fprintf(fd, "name : xiaoming\n");
 24         fprintf(fd, "sex : man\n");
 25         fprintf(fd, "age : 18\n");
 26     }
 27 
 28     //close fd
 29     if(NULL != fd)
 30     {
 31         fclose(fd);
 32         fd = NULL;
 33     }
 34     return 0;
 35 }

代码运行后,会在test.txt文件中写入固定格式的内容,如下图所示:
在这里插入图片描述

2.2 fscanf

这个函数用于从文件中读取固定格式的内容,它的特点之一就是可以把读取到的内容直接保存到某个变量当中,需要保证的是这个变量和读取的内容的类型需要保持一致,具体用法请看下面的代码:

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <sys/types.h>
5 #include <iostream>
6 #include <string>
7 
8 int main()
9 {
10     char name[28];
11     char sex[28];
12     int age;
13 
14     FILE* fd = fopen("./test.txt", "w+");
15 
16     if(NULL == fd)
17     {
18         std::cout << "fopen failed..." << std::endl;
19     }
20     else
21     {
22         //写数据到文件中
23         fprintf(fd, "name : xiaoming\n");
24         fprintf(fd, "sex : man\n");
25         fprintf(fd, "age : 18\n");
26         //将文件操作指针移动到首部
27         fseek(fd, 0, SEEK_SET);
28         //开始读取数据,并保存到变量中
29         fscanf(fd, "name : %s\n", name);
30         fscanf(fd, "sex : %s\n", sex);
31         fscanf(fd, "age : %d\n", &age);
32     }
33    //打印输出变量的值
34     std::cout << "name : " << name << std::endl;
35     std::cout << "sex : " << sex << std::endl;
36     std::cout << "age : " << age << std::endl;
37 
38     //close fd
39     if(NULL != fd)
40     {
41         fclose(fd);
42         fd = NULL;
43     }
44     return 0;
45 }

输出结果如下图所示:
在这里插入图片描述


原文地址:https://blog.csdn.net/FY_13781298928/article/details/144311109

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!