尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

【11】C实战篇——C语言 【scanf、printf、fprintf、fscanf、sprintf、sscanf】的区别 - 详解
📅 发布时间:2026/6/20 16:45:02

文章目录

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

4 格式化输入输出

前边介绍的方法都是字符的读写,
而fprintf 和fscanf是对数据进行格式读写,
除此之外还有sscanf和sprintf

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

  • 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;}

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

运行成功后,打开文件就可以看到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中的数据:
在这里插入图片描述

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

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

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很像,它仅仅是在前边添加了一个转换的数组地址。

相关新闻

  • Correlation inequality小记
  • 实用指南:TimescaleDB 超表 物理表解释
  • 记力扣2271.毯子覆盖的最多白色砖块数 练习理解 - 详解

最新新闻

  • 嵌入式GUI内存设备:emWin旋转缩放与动画特效实战指南
  • 2026最新去水印技巧,视频图片都能用 - 爱上科技热点
  • CANN/GE图引擎API:IrDefInputs方法
  • 4层编译栈设计:构建企业级深度学习框架的架构解析
  • 2026南京黄金回收实力榜:经营面积超100平、配备光谱检测仪的六家机构 - 商业信息快查
  • TSN实战:基于NXP平台的确定性网络动态配置与核心技术详解

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号