当前位置: 首页 > article >正文

C语言之文件读写——fscanf(),fprintf()详解

1.fscanf():

fscanf()函数的头文件是<stdio.h>,

函数原型 int fscanf(FILE*stream, constchar*format, [argument...]);

其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);

【参数】stream为文件指针,format为格式化字符串,argument 为格式化控制符对应的参数。

 

从文件指针fp指向的文件中,按format中对应的控制格式读取数据,并存储在agars对应的变量中;

原型: fscanf(FILE *fp, const char *format, agars)

#include<stdio.h>
#include<stdlib.h>int main(){FILE *fp;char ch;fp = fopen("test.txt","r");if(fp == NULL){printf("Open filefailure!");exit(1);}else{fscanf(fp,"%s",&ch);}printf("%s\n",ch);   fclose(fp);return 0;
}

对于上面else中的内容需注意一下几点:

1.如果要读取一个整数(该整数必须在所存变量的数据类型表示的范围之内)则为:fscanf(fp, “%d”, &ch),而此时ch应该定义为int;若读取的数据大于int所能表示的范围,则读取的数据屏幕显示为负数,即读取的数据发生越界,如果此时的ch依然为char型,则运行时报错(内存读写错误)。

2.如果要读取字符串,则ch应该定义为char型数组或指针(指针需分配空间),而不能将其定义为char型,否则也会报错(内存读写错误);

3.输出数据时的数据格式应该和读取数据时的控制格式相同,除非进行强制转换。

4.使用fscanf()时,其中的变量agars应该取其地址;

5.对于文件的操作,记得文件打开操作后要关闭。

对于fscanf()主要应用

   按行读取一个文件中的所有内容 依次读取每行相隔的几个数据,具体参照以下示例:

#include<stdio.h>
#include<stdlib.h>int main()
{FILE *fp;char *ch, *ah;ch =(char *) malloc(sizeof(char) * 100);ah =(char *) malloc(sizeof(char) * 100);fp = fopen("test.txt","r");if(fp == NULL){printf("Open filefailure!");exit(1);}else{while(!feof(fp)){fscanf(fp, “%s”, ch);printf(“%s”, ch);//这两行为按行读取所有数据fscanf(fp, “%s%s”, ch, ah);printf(“The value of ch and ah is:%s %s\n”,ch,ah);//这两行为分别读取每行相隔的几个数据            }}printf("%s\n",ch);free(ch);free(ah);fclose(fp);return 0;
} 

2.fprintf():

将agars(参数表)内各项的值,按format(格式控制字符串)所表示的格式,将数据格式为字符串的形式写入到文件指针fp指向的文件中。

原型:fprintf(FILE *fp, const char *format, agars)

fprintf()和fscanf()相对应,其用法也基本和fscanf()相同。具体参照以下示例:

#include<stdio.h>
#include<stdlib.h>int main()
{FILE *fp;fp = fopen("test.txt","a+");fprintf(fp,“%d %d”,123456,789);//将123456和789写到test.txt文件中fprintf(fp,"%s %s","China","ChongQing"); //将字符串China和ChongQing追加写到test.txt文件中fclose(fp);return 0;}

 

参考:https://blog.csdn.net/jhg1204/article/details/7932187

           https://blog.csdn.net/sinat_24310873/article/details/53141429

 

 

http://www.lryc.cn/news/2416953.html

相关文章:

  • mailbox机制实例介绍(一)
  • 线性代数——余子式
  • HCIP------ 网络类型 PPP协议和HDCL协议
  • TrueCrypt原理与系统开发
  • 数据增强 - Cutout、Random Erasing、Mixup、Cutmix
  • 探索 `mpvue-vant`: 微信小程序开发的新利器
  • mint-ui使用
  • JqGrid 各个属性、方法使用说明
  • 快速上手 Rook,入门云原生存储编排
  • xxxxxxxxxxxxxxxxxxxxx已转行
  • ROV简易组装说明
  • 还在为没有项目做发愁?这几个神级开源网站,都是FPGA/IC项目
  • segment fault异常及常见定位手段
  • 分享几个源码网站奉献给大家(持续更新中……)
  • 【pmcaff】重磅干货,必读的扁平化设计技巧
  • GNS3 网络模拟器介绍
  • MySQL数据类型简介以及MySQL INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT(整数类型)
  • WSUS补丁服务器搭建和使用(超详细+域策略设置)
  • Web前端最新jQuery UI widget源码解析,前端入门
  • Linux之常用压缩解压缩命令
  • 最近成果
  • AXIOM的介绍与使用
  • 天呐!你知道MSBuild都干了些什么
  • KingbaseES数据库审计
  • NDK基础
  • 两个必看协议-最全面-最直接-最暴力-一篇文章带你读懂-HTTP、HTTPS
  • 探索WebRTC Streamer:实时通信的新境界
  • Oracle:TNS数据传输协议-基础篇
  • C# DataTable 总结常用方法
  • Xamarin移动开发的优点和缺点