顺序读写函数的介绍:fscanf fprintf

news/2024/9/23 6:29:14/

目录

函数介绍:

fprintf:

将结构体变量s的成员列表内容写入文件中:

文件效果:已经进行了格式化,3.140000是最明显的效果,因为float需要补齐0来补充精度

和printf的对比:

 不同之处: 

和printf的效果对比:

屏幕效果一样:

 fscanf:

从文件中读取数据,并将数据依次按照格式化分配到构体成员中,并使用printf打印:

文件内容:

代码操作: 

读取文件效果后的打印效果:从文件中读取了数据内容并且进行了printf打印

注意:

打印效果: 

和scanf的对比:

不同之处: 

和scanf对比效果: 

 小总结:

附赠内容:

 sscanf & sprintf:

sprintf:

 结果展示:

 内部展示:

sscanf:

 结果:


函数介绍:

fprintf:

将结构体变量s的成员列表内容写入文件中:

struct S
{int n;float f;char arr[20];
}int main()
{struct S s = {100,3.14f,"zhangsan"};FILE* pf = fopen("data.txt","w");if (pf == NULL){   perror("fopen");return 1;}fprintf(pf,"%d %f %s", s .n , s .f , s.arr) ;return 0;
}

文件效果:已经进行了格式化,3.140000是最明显的效果,因为float需要补齐0来补充精度

和printf的对比:

 不同之处: 
  • printf从标准流中输出数据,比如在屏幕中写入数据内容。
  • fprintf从指定流中输出数据,比如在指定的文件中写入数据内容。

和printf的效果对比:

printf("%d %f %s", s .n , s .f , s.arr) ;

写入结构体变量中的成员内容。 

fprintf(stdout,"%d %f %s", s .n , s .f , s.arr) ;

将结构体变量中的成员内容写入屏幕中。 

屏幕效果一样:

 fscanf:

从文件中读取数据,并将数据依次按照格式化分配到构体成员中,并使用printf打印:

文件内容:

代码操作: 
struct s
{ int n;float f;char arr[20];
}int main()
{struct S s = {0}:FILE* pf = fopen("data.txt","r");if (pf == NULL){perror("fopen");return 1;}fscanf(pf."%d %f %s",&(s .n).&(s.f),s.arr);printf("%d %f %s",&(s .n).&(s.f),s.arr)return 0;
}
读取文件效果后的打印效果:从文件中读取了数据内容并且进行了printf打印
注意:

这里的结构体变量s一开始进行了初始化为0,所以单纯使用printf是打印不出来数据的,所以这里printf打印的数据是fscanf读取而来的,而printf打印了fscanf读取的内容。

打印效果: 

和scanf的对比:

不同之处: 
  • fscanf是从指定流中拿取数据,比如只读取文件中的内容。
  • scanf是从标准流中拿取数据,比如可以从键盘中或者其他变量中拿取数据。

和scanf对比效果: 

scanf("%d %f %s", &(s .n), &(s .f), s .arr);
fscanf(pf."%d %f %s",&(s .n), &(s.f),s.arr);

 小总结:

 

附赠内容:

 

 sscanf & sprintf:

sprintf:

把格式化的数据变成字符串。

sprintf(存放字符串的空间起始地址,格式化的格式,需要变成字符的数据变量)

将结构体变量s的成员进行赋值,而后又创建一个数组空间,将结构体变量的成员使用sprintf将成员变量变成一个字符串。

 结果展示:

 内部展示:

 已经变成字符串了。

sscanf:

从字符中读取格式化的数据。

sscanf(存放字符串的空间起始地址,格式化的格式,需要格式化的数据地址)

在之前sprintf的代码基础上,在设立一个结构体,将原先已经变成字符串的数据,从arr这个数组空间中拿出,并以此放入结构体变量t的成员中,进行格式化数据,最后进行打印。

 结果:

  • 前者是结构体变量s的成员被sprintf变成字符串后,放在arr数组空间的内部。
  • 后者是arr中的字符串被sscanf从数组空间中拿出,重新变成格式化数据的结构体变量t的成员。 

http://www.ppmy.cn/news/1124515.html

相关文章

Java虚拟机(JVM):内存模型、垃圾回收、性能调优与最佳实践

AIGC专栏/AI绘画教程/java面试题领取 引言 Java虚拟机(JVM)是Java应用程序的运行环境,它具有独特的内存管理机制和垃圾回收策略,同时提供了一系列参数供开发人员调优。本文将深入探讨JVM内存模型、垃圾回收算法、垃圾回收器类型…

编程示例:蔡勒公式计算某一天是星期几 公式来源于1886年

计算星期可用 蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形): W Y [Y/4] [C/4] - 2C [13(M1)/5] D - 1 公式中的符号含义如下: C&…

电子器件系列55:lm339比较器

以这个比较器为例 电压比较器可以看作是放大倍数接近“无穷大”的运算放大器。 电压比较器的功能:比较两个电压的大小(用输出电压的高或低电平,表示两个输入电压的大小关系): 当””输入端电压高于”-”输入端时,电压…

联邦学习系统攻击与防御技术

​​​​​​​ 摘要 联邦学习作为一种使用分布式训练数据集构建机器学习模型的新兴技术,可有效解决不同数据用户之间因联合建模而导致的本地数据隐私泄露问题,从而被广泛应用于多个领域并得到迅速发展。然而,现有的联邦学习系统已被证实在…

51单片机自行车码表 速度里程计霍尔测速模拟电机设计

一、系统方案 本设计采用51单片机作为主控器,霍尔测速,数码管显示速度及里程数。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void init() { IT01; //INT0负跳变触发 TMOD0x01;//定时器工作于方式1 TH00x3c; //5…

持续集成Jenkins安装部署

Jenkins是一个在DevOps领域中、支持CI/CD(持续集成/持续交付)过程域的开源项目,其提供可扩展插件的支持,以自动化的机制对项目工程执行打包、编译、构建、测试以及最终发布到目的地服务器并成功部署运行,本文主要描述J…

CNC 3D浮雕 Aspire 11.55 Crack

Aspire 提供了功能强大且直观的软件解决方案,用于在 CNC 铣床上创建和切割零件。有用于 2D 设计和计算 2D 刀具路径的工具,例如仿形、型腔加工和钻孔以及 2.5D 刀具路径,包括:V 形雕刻、棱镜雕刻、成型刀具路径、凹槽、 倒角刀具路…

一、浏览器输入URL会发生什么

参考链接:B站视频链接:https://www.bilibili.com/video/BV1qL411G7uj/ 本视频讲述了HTTP协议及其工作原理,包括HTTP协议的三次握手建立TCP连接、HTTP请求报文、HTTP响应报文等。同时,本视频还介绍了浏览器解析域名并建立TCP连接的…