很多时候我们需要写入数据到文件中时都觉得很困扰,因为格式乱七八槽的,可读性太差了,
于是我们就想有没有什么函数可以格式化的从文件中输入和输出呢,还真有。下面我将讲解
一下fscanf和fprintf的强大之处。

1、fscanf(可以从一个文件流中格式化读出数据,遇到空格或回车就停止)
原型: int fscanf(FILE *stream, const char *format, ...); //fscanf(文件流指针,格式字符串,输出表列);
参数:
FILE *stream :文件流指针
const char *format, ... :字符串的格式
例子 :

fscanf(fp,"%s %s %d",new1->number,new1->staddress,&new1->price);(这样写的话数据输入到文件中时每个数据中间就会有一个空格)

或者写成:
fscanf(fp,"%s,%s,%d",new1->number,new1->staddress,&new1->price);(这样写的话数据输入到文件中时每个数据中间就会有一个‘,’)

2、fprintf(可以向一个文件中格式化写入数据)
原型: int fprintf(FILE *stream, const char *format, ...); //fprintf(文件流指针,格式字符串,输出表列);
参数:
a、FILE *stream :文件流指针
b、const char *format, ... :字符串的格式

例子 :
fprintf(fp,"%s %s %d\n",new->number,new->staddress,new->price);    //同上

或者写成:
fprintf(fp,"%s,%s,%d\n",new->number,new->staddress,new->price);  //同上

下面是代码:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h> #define LENGTH 100 //数组的大小 typedef struct
{
char number[LENGTH];
char staddress[LENGTH];
int price;
}*node,Node; int main(int argc,char *argv[])
{
FILE *fp;
fp = fopen("test.txt","a+"); //以读写的权限打开文件(如果文件不存在则创建)
if(fp == NULL)
{
perror("fopen");
exit();
} node new,new1; //new用来存放写入到文件中的数据,new1用来存放从文件中读出的数据 //为两个结构体指针分配空间
new = (node)malloc(sizeof(Node));
new1 = (node)malloc(sizeof(Node)); //清空
memset(new,,sizeof(node));
memset(new1,,sizeof(node)); strcpy(new->number,"");
strcpy(new->staddress,"南宁");
new->price = ; fprintf(fp,"%s %s %d\n",new->number,new->staddress,new->price); //格式化写入数据到文件中
fseek(fp, , SEEK_SET); //文件指针重置,因为上面把数据写入文件的时候已经把文件流指针定位到文件尾了,所以要重新定位到文件头 fscanf(fp,"%s %s %d",new1->number,new1->staddress,&new1->price);//格式化从文件中读出数据
printf("%s %s %d\n",new1->number,new1->staddress,new1->price); //释放两个结构体指针
free(new);
free(new1); fclose(fp); //关闭文件
return ; }

这是我在ubuntu上运行的结果:

屏幕上的输出:

打开test.txt文件中的内容:

c语言中的文件格式化读写函数fscanf和fprintf函数的更多相关文章

  1. C语言中对文件的读写的一些浅显理解

    前述:基于上学期完成的数据结构的课程设计,对于老师的提出要求实现的基础上,自己在使用过程中发现每次打开程序都需要重新输入数据,于是便决定,将文件读写功能加入此次课程设计中,以下是我的一些心得和浅显理解 ...

  2. VC中对文件的读写

    http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理 ...

  3. 【转】VC中对文件的读写

    原文网址:http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2 ...

  4. C语言中头文件怎么写?(本文来源网络,由黑乌鸦进一步完善)

      c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码.有利于整理思路.使代码脉络 ...

  5. eclipse中xml文件格式化

    eclipse中xml文件格式化(ctrl+shift+f),可能会发现格式化xml文件后很乱,如图: 这不是我想要的样子,我想要的是这样的: 解决办法:windows -> Perferenc ...

  6. C语言中以文本方式读写文件时换行符转换的注意事项

    我们知道在UNIX下是没有回车符(\r)的,只有换行符(\n),而C语言诞生于UNIX(Linux即面向开源的UNIX,Mac OS也是UNIX发展而来的,而Windows是从MS-DOS发展而来,与 ...

  7. c语言中的文件流

    一.打开和关闭文件 #include int main( void ) { FILE* pReadFile = fopen( "E:\\mytest.txt", "r&q ...

  8. LINUX文件格式化读写(文件指针,缓冲)

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  9. C语言中的文件操作

    按照字符的方式读取文件 按照行的方式读取文件 按照数据块的方式读取文件 按照格式化的方式读取文件 文件分类 记录文件:具有一定的结构记录组成,分为定长和不定长两种方式 流式文件:按照一个字符一个字符( ...

随机推荐

  1. vue使用之剑走偏锋——菜单组件篇

    背景 习惯了这样的写法了,上来先来一个背景,交待一下事情的起因.事情的起因很简单,用惯了mvc框架,想来一发前后端完全分离的框架试试.选用的人员和技术是这样子的,让原本做java的web开发的人员使用 ...

  2. fiddler 抓取手机app请求包

    今天心血来潮,也不知道怎么了,想着抓抓我们公司手机app的包看看,研究研究我们公司的接口,哎,我们api文档,我自己抓包看看吧.工具选择fiddler,理由免费,用着也舒服,手机设备 iPhone6 ...

  3. 华为服务器Linux在线做RAID方法

    背景概述 最近维护大数据的一些主机,大概有3k+的数目,有很大一部分是华为的服务器,大部分是12块数据盘,单盘做RAID0来存放数据,但是通常硬件是不可靠的,磁盘损坏是常态, 然而磁盘损坏进行定位更换 ...

  4. linux下U盘挂载

    linux下挂载U盘 一.Linux挂载U盘:1.插入u盘到计算机,如果目前只插入了一个u盘而且你的硬盘不是scsi的硬盘接口的话,那它的硬件名称为:sda1,可以用"fdisk -l&qu ...

  5. Appium实现的技巧

    截图功能: //截屏并保存至本地             File screen = driver.getScreenshotAs(OutputType.FILE);             File ...

  6. Csharp调用基于Opencv编写的类库文件

    现在将Csharp调用基于Opencv编写的类库文件(Dll)的方法定下来,我取名叫做GreenOpenCsharpWarper,简称GOCW. 一.CLR编写的DLL部分 1.按照正常方法引入Ope ...

  7. css超简单实现div页面居中【适合做弹出框】

    1.前言 现在项目中用到弹出框的话大部分都是直接用控件的.不过有控件虽方便,但有时候会有冲突的地方.我上次用layui的弹出框控件,然后也用到了百度的编辑器uEditor,然后一切都好好的,结果编辑赋 ...

  8. 马的遍历 洛谷 p1443

    题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出 ...

  9. 用R进行文本分析初探——以《红楼梦》为例

    一.写在前面的话~ 刚吃饭的时候同学问我,你为什么要用R做文本分析,你不是应该用R建模么,在我和她解释了一会儿后,她嘱咐我好好写这篇博文,嗯为了娟儿同学,细细说一会儿文本分析. 文本数据挖掘(Text ...

  10. MySQL多字节字符集造成主从数据不一致问题

    MySQL多字节字符集造成主从数据不一致问题 来自江羽   2013-04-27 16:03:56|  分类: 默认分类|举报|字号 订阅 转载: http://backend.blog.163.co ...