【11】C实战篇——C语言 【scanf、printf、fprintf、fscanf、sprintf、sscanf】的区别 - 详解

news/2025/10/26 9:47:03/文章来源:https://www.cnblogs.com/yxysuanfa/p/19166499

文章目录

  • 4 格式化输入输出
    • 4.1 格式化写 fprintf
    • 4.2 格式化读 fscanf
    • 4.3 数据转化为字符串 sprintf
    • 4.3 字符串的数据还原 sscanf

4 格式化输入输出

前边介绍的方法都是字符的读写,
fprintffscanf是对数据进行格式读写,
除此之外还有sscanfsprintf

我们可以来对比一下这几个函数:

  • scanf 从标准输入流读取格式化的数据。
  • printf 向标准输出流写格式化的数据。
  • fscanf 适用于所有输入流的格式化输入函数
  • fprintf 适用于所有输出流的格式化输出函数
  • sprintf 将格式化的数据写入到字符串中(将格式化的数据转化为字符串),可以将任何类型的数据转换成字符串;
  • sscanf将转换成字符串的数据还原 ,(sprintf将数据转换成字符串,sscanf将数据还原。)

4.1 格式化写 fprintf

fprintf 适用于所有输出流的格式化输出函数

#include<stdio.h>struct S {int a;float s;};int main(){FILE* pf = fopen("data.txt", "w");//注意,读写时操作不同,注意修改if (pf == NULL){perror("fopen");return 1;}struct S s = { 100,3.14f };//写入到文本fprintf(pf, "%d %f", s.a, s.s);fclose(pf);pf = NULL;return 0;}

它可以将不同格式的数据输出到指定位置。fprintfprintf很类似,就是前边加上输出的位置。

运行成功后,打开文件就可以看到100,3.140000出现在文件中。

在这里插入图片描述

4.2 格式化读 fscanf

fscanf 适用于所有输入流的格式化输入函数。

既然有格式化输出,那就必然有从文件中输入。

struct S {
int a;
float s;
};
int main()
{
FILE* pf = fopen("data.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
struct S s = { 0 };
fscanf(pf, "%d %f", &(s.a), &(s.s));
printf("%d %f", s.a, s.s);
fclose(pf);
pf = NULL;
return 0;
}

读取之前保存的数据,屏幕上就会输出文件中的数据。

fscanf和我们经常适用的scanf也很相似,只是多了一个读取数据的位置。

在这里插入图片描述

4.3 数据转化为字符串 sprintf

sprintf 将格式化的数据写入到字符串中(将格式化的数据转化为字符串),可以将任何类型的数据转换成字符串;

struct S {
int a;
float s;
char str[20];
};
int main()
{
char ch[30] = { 0 };
struct S s = { 100,3.14f,"hello world" };
sprintf(ch, "%d %f %s", s.a, s.s, s.str);
return 0;
}

通过调试,观察ch中的数据:
在这里插入图片描述

可以观察到它确实将数据转化成了字符串,并存放到了数组当中。

sprintfprintf也很类似,只需在前边添加要存放的数组。

4.3 字符串的数据还原 sscanf

sprintf 将数据转换成字符串,sscanf将数据还原。通过结构体访问成员进而输出。

struct S {
int a;
float s;
char str[20];
};
int main()
{
char ch[30] = { 0 };
struct S s = { 100,3.14f,"hello world" };
struct S t = { 0 };
sprintf(ch, "%d %f %s", s.a, s.s, s.str);
sscanf(ch, "%d %f %s", &(t.a), &(t.s), &(t.str));
printf("%d %f %s\n", t.a, t.s, t.str);
return 0;
}

在这里插入图片描述

sscanf其实也是和scanf很像,它仅仅是在前边添加了一个转换的数组地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读AI赋能10助手

读AI赋能10助手1. GPS 1.1. 地图1.1.1. 在21世纪初之前,​“纸质地图”这个词并不存在,它们当时只是被称为“地图”​1.1.2. 物理世界缩小至我们的掌心,我们的视野却因此变得更加开阔1.2. 1973年,美国国防部启动了…

P13518 [KOI 2025 #2] 镜子

解题思路 核心观察:每次使用镜子相当于进行一次对称变换,位置从 a 变为 2b - a。经过数学推导可以发现,最终的终点位置可以表示为: 终点 = 2(某些镜子的位置) - 2(另一些镜子的位置) + ... + (-1)^N 初始位置 关键…

Correlation inequality小记

定义\(n\)元函数\(f\)单调递增:如果对于所有 \(x,y\), 如果\(x_i\leq y_i\)对于\(i=1...n\)成立,那么\(f(x)\leq f(y)\)。 如果\(f,g\)单调递增,那么\(E(fg)\geq E(f)E(g)\)(\(f,g\)的定义域相同) 证明:考虑归纳…

实用指南:TimescaleDB 超表 物理表解释

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

使用Prodfiler优化eBPF编译器性能:从内存分配到向量化的全面调优

本文详细介绍了如何利用Prodfiler性能分析工具对eBPF优化编译器K2进行深度优化,通过替换内存分配器、优化数据结构、应用PGO和LTO等技术,最终实现1.4-1.9倍的性能提升。使用Prodfiler优化eBPF优化编译器 如何在不修改…

详细介绍:JMeter接口测试

详细介绍:JMeter接口测试pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…

深入解析:GESP25年9月编程题解析

深入解析:GESP25年9月编程题解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

Anthropic Agent Skills 技术解析与实践

Anthropic Agent Skills 技术解析与实践2025-10-26 09:16 姜 萌@cnblogs 阅读(0) 评论(0) 收藏 举报前言 Anthropic 在 2025 年 10 月推出了 Agent Skills 框架,这是一个让通用 AI 获得专业技能的机制。本文通过分…

d40: vue杂项问题 - 详解

d40: vue杂项问题 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

day04-Coze工作流案例(中草药识别-菜谱生成-智能换脸)

今日内容coze的工作流---》coze智能体中:工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排 干一件时间的流程:第一步干什么,第二步干什么,最后干什么。。…

记力扣2271.毯子覆盖的最多白色砖块数 练习理解 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:【Android之路】 Kotlin 的 data class、enum class、sealed interface

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

精通-Pandas-探索性分析-全-

精通 Pandas 探索性分析(全)原文:Mastering Exploratory Analysis with Pandas 协议:CC BY-NC-SA 4.0零、前言 在本书中,您将深入学习 Pandas,这是一个 Python 库,用于处理,转换和分析数据。 这是用于探索性数…

【图像处理-基础知识】SFIT特征解析 - 教程

【图像处理-基础知识】SFIT特征解析 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

深入解析:【FPGA+DSP系列】——(2)DSP最小核心板进行ADC采样实验(采集电位器输出电压)

深入解析:【FPGA+DSP系列】——(2)DSP最小核心板进行ADC采样实验(采集电位器输出电压)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !import…

精通-HTML5-表单-全-

精通 HTML5 表单(全)原文:zh.annas-archive.org/md5/835835C6B2E78084A088423A2DB0B9BD 译者:飞龙 协议:CC BY-NC-SA 4.0前言 Web 浏览者可能永远不会了解应用程序的背景,比如 HTML5、CSS3、响应式网页设计或 PH…

ABC429F Shortest Path Query 题解

AtCoder 写在前面 赛时没想出来,赛后经过大神和题解点拨有点思路了。之前确实没咋遇见过多少线段树维护矩阵的题。那就写写题解当积累trick了吧。 题意 给出一张\(3 \times N\) 的矩阵,内含# . 两种字符。其中# 代表…

苏维埃日报08.高三生福音?大屏课表软件ClassIsland助你度过高三

\(1.\)什么是\(ClassIsland\)? \(ClassIsland\)是一款适用于班级多媒体屏幕的课表的信息显示工具,可以一目了然地显示各种信息。本应用的名字灵感源于\(iOS\)灵动岛(\(Dynamic\) \(Island\))功能。 \(2.\)如何下载…

创建平面设计网站-全-

创建平面设计网站(全)原文:zh.annas-archive.org/md5/76ED001744425FC67A6333D19F2CBD18 译者:飞龙 协议:CC BY-NC-SA 4.0前言 扁平设计是一种数字设计风格,近年来在网页和用户界面设计中成为最大的趋势之一。它…

2025年优质的造纸橡胶辊,天然橡胶辊品牌厂家排行榜

2025年优质的造纸橡胶辊、天然橡胶辊品牌厂家排行榜 在造纸、印刷、纺织、木业、光伏等行业中,橡胶辊的质量直接影响生产效率和产品品质。优质的橡胶辊需具备耐磨、耐高温、耐腐蚀等特性,同时要求精准的尺寸控制和稳…