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

scanf/fscanf/sscanf和printf/fprintf/sprintf的对比

目录摘要一函数的对比二函数的使用1printf2scanf3fprintf4fscanf5sprintf6sscanf摘要本博客从函数参数到具体使用过程去对比这6个函数一函数对应流scanf从标准输入流中读取格式化数据通常是键盘printf将格式化数据输出到标准输出流通常是屏幕fscanf适用于所有输入流的格式化输入函数一般从指定的文件流中读取格式化的数据fprintf适用于所有输出流的格式化输出函数一般将格式化的数据写入到指定的文件流中sscanf从字符串中读取格式化的数据sprintf从字符串中读取格式化的数据标准输入流即从键盘上输入的数据流标准输出流从屏幕上输出的数据流所有输入流除了键盘还可以读取文件等流里的数据所有输出流除了屏幕还可以写在文件等流里的数据二函数的使用1printfintprintf(const char *format, ... );参数解释参数类型说明formatconst char *格式控制字符串包含格式占位符和普通字符...可变参数对应格式占位符要输出的变量函数作用按照format格式将数据输出到标准输出屏幕支持各种格式控制整数、浮点数、字符串、十六进制等不会自动换行需要手动加\n返回值返回值含义 0成功输出的字符总数负数输出失败注意事项格式占位符必须与变量类型匹配常用于调试输出、显示结果待讲完scanf再一起结合使用2scanfintscanf(const char *format, ... );参数解释参数类型说明formatconst char *格式控制字符串指定如何解析输入...可变参数对应格式占位符的变量地址需要加函数作用从标准输入键盘读取数据并存储到创建的变量中自动跳过空白字符空格、换行、制表符等遇到类型不匹配时停止注意事项变量前面必须加数组名和指针除外因为二者本身就是地址读取字符串%s会在遇到空格时停止且不检查缓冲区大小可能溢出输入缓冲区问题scanf会留下换行符影响后续输入返回值返回值含义正整数成功匹配并赋值的参数个数0没有匹配到任何数据EOF-1输入结束或发生错误使用示例#include stdio.h int main() { int age; float score; char name[50]; printf(请输入姓名); scanf(%s, name); // 字符串不需要 printf(请输入年龄); scanf(%d, age); // printf(请输入分数); scanf(%f, score); // printf(\n--- 输出信息 ---\n); printf(姓名%s\n, name); printf(年龄%d\n, age); printf(分数%.1f\n, score); return 0; }3fprintfintfprintf(FILE *stream,const char *format, ... );对比printfintprintf(const char *format, ... );仅仅多了FILE * stream参数参数解释参数类型说明streamFILE *指向要写入的文件流的指针formatconst char *格式控制字符串包含格式占位符如%d、%s等...可变参数对应格式占位符要输出的变量函数作用将格式化的数据写入到指定的文件流中返回值返回值含义 0成功写入的字符总数负数写入失败注意事项格式字符串与变量类型要匹配否则结果不可预料使用示例#include stdio.h int main() { FILE* fp fopen(test.txt, w); if (fp NULL) { perror(打开文件失败); return 1; } int age 25; float score 92.5; char name[] 张三; fprintf(fp, %s\n, name); fprintf(fp, %d\n, age); fprintf(fp, %.1f\n, score); //合成一行的写法 //fprintf(fp, %s %d %.1f\n, name, age, score); fclose(fp); fp NULL return 0; }解释说白了就是在printf的用法上增加一个FILE*类型的参数fp而已4fscanfintfscanf(FILE *stream,const char *format, ... );对比intscanf(const char *format, ... );只多了FILE * stream参数参数解释参数类型说明streamFILE *指向要读取的文件流的指针formatconst char *格式控制字符串指定如何解析数据...可变参数对应格式占位符的变量地址用于存储读取的值函数作用从文件中读取格式化的数据返回值返回值含义正整数成功匹配并赋值的参数个数0没有匹配到任何数据但可能有字符被读取EOF-1读取时到达文件尾或发生错误注意事项功能与scanf完全相同区别是scanf从键盘读取fscanf从文件读取自动跳过空白字符空格、换行、制表符等遇到类型不匹配或文件尾时停止使用示例#include stdio.h int main() { FILE* fp fopen(test.txt, r); if (fp NULL) { perror(打开文件失败); return 1; } char name[50]; int age; float score; fscanf(fp, %s, name); fscanf(fp, %d, age); fscanf(fp, %f, score); printf(%s\n, name); printf(%d\n, age); printf(%.1f\n, score); fclose(fp); return 0; }解释说白了就是在scanf的用法上增加一个FILE*类型的参数fp而已5sprintfintsprintf(char *str,const char *format, ... );对比printfintprintf(const char *format, ... );仅仅多了char *str参数参数解释参数类型说明strchar *指向目标字符串的指针formatconst char *格式控制字符串与printf相同...可变参数对应格式占位符要输出的变量函数作用按照format格式将数据输出到字符串中而不是屏幕或文件常用于将多个数据拼接成字符串会在字符串末尾自动添加\0功能与printf完全相同区别是输出目标不同返回值返回值含义 0成功写入字符串的字符总数不包括结尾的\0负数写入失败注意事项必须确保str缓冲区足够大否则会发生缓冲区溢出危险不会检查缓冲区大小使用示例#include stdio.h int main() { char buffer[100]; int age 25; float score 92.5; char name[] 张三; sprintf(buffer, 姓名%s年龄%d分数%.1f, name, age, score); printf(%s\n, buffer); return 0; }解释sprintf将多种类型的数据拼接为一个字符串然后以%s的格式成功打印字符串6sscanfintsscanf(const char *str,const char *format, ... );对比intscanf(const char *format, ... );只多了const char *str参数参数解释参数类型说明strconst char *指向要解析的源字符串的指针formatconst char *格式控制字符串与scanf相同...可变参数对应格式占位符的变量地址需要加函数作用从字符串中按照format格式读取数据并存储到变量中而不是从键盘功能与scanf完全相同区别是数据来源不同返回值返回值含义正整数成功匹配并赋值的参数个数0没有匹配到任何数据EOF-1源字符串为空或发生错误注意事项变量前面必须加数组名和指针除外常用于解析格式化字符串如日志、配置文件、网络数据包等比scanf更安全不会受输入缓冲区问题影响使用示例#include stdio.h int main() { char str[] 张三 25 92.5; char name[50]; int age; float score; sscanf(str, %s %d %f, name, age, score); printf(姓名%s\n, name); printf(年龄%d\n, age); printf(分数%.1f\n, score); return 0; }解释sscanf从一个字符串中解析出多种类型的数据将各种类型的数据分别存放进指定的空间 [ 作者 ] shylyly [ 首次发布 ] 2024.3.30❌ [ 最新修改 ] 2026.5.17 [ 声明 ] 由于笔者水平有限文中难免有疏漏或不妥之处还望读者不吝赐教。

相关文章:

scanf/fscanf/sscanf和printf/fprintf/sprintf的对比

目录 摘要: 一:函数的对比 二:函数的使用 1:printf 2:scanf 3:fprintf 4:fscanf 5:sprintf 6:sscanf 摘要: 本博客从函数参数到具体使用过程去对比这…...

Perplexity新闻资讯搜索终极对比:VS Google News、Bing News、Feedly——基于3000+查询样本的准确率/时效性/溯源完整性三维压测报告

更多请点击: https://kaifayun.com 第一章:Perplexity新闻资讯搜索终极对比:VS Google News、Bing News、Feedly——基于3000查询样本的准确率/时效性/溯源完整性三维压测报告 在为期12周的基准测试中,我们构建了覆盖科技、金融、…...

终极指南:三分钟轻松解锁《原神》60帧限制,让你的高刷显示器火力全开![特殊字符]

终极指南:三分钟轻松解锁《原神》60帧限制,让你的高刷显示器火力全开!🎮 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》60…...

构建多模型备援策略以提升企业级 AI 应用可靠性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建多模型备援策略以提升企业级 AI 应用可靠性 在构建企业级 AI 应用时,服务的稳定性与可靠性是核心考量之一。单一模…...

FSearch:重新定义Linux文件搜索的高性能解决方案

FSearch:重新定义Linux文件搜索的高性能解决方案 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中,文件搜索一直是开发者和技术爱…...

HPM6750 BGA196封装XPI0 CA端口缺失的CB端口启动解决方案

1. 项目概述与核心挑战最近在做一个对PCB尺寸有严格限制的嵌入式项目,主控芯片选用了先楫半导体的高性能MCU HPM6750。为了压缩板子面积,我放弃了引脚更丰富的BGA289封装(HPM6750IVM2),转而选择了更紧凑的BGA196封装&a…...

iOS设备激活锁绕过终极指南:使用Applera1n免费解锁iPhone/iPad

iOS设备激活锁绕过终极指南:使用Applera1n免费解锁iPhone/iPad 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n iOS激活锁是苹果设备的重要安全功能,但当你忘记Apple ID密码或购…...

5分钟快速上手:使用免费在线EPUB编辑器制作专业电子书

5分钟快速上手:使用免费在线EPUB编辑器制作专业电子书 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 你是否梦想过出版自己的电子书,却被复杂的EPUB格式和技术门槛吓退&a…...

嵌入式Linux启动优化实战:从U-Boot到应用的全链路加速

1. 项目概述与优化价值作为一名在嵌入式领域摸爬滚打了十多年的老工程师,我深知产品启动速度对于用户体验和系统性能的“第一印象”有多重要。尤其是在像全志T113这类面向工控、物联网、智能终端的应用处理器平台上,从按下电源键到应用界面就绪&#xff…...

别再死磕GAN了!用PyTorch从零实现DDPM扩散模型,手把手带你跑通CIFAR-10生成

从GAN到DDPM:用PyTorch实战扩散模型的图像生成革命 当我在2022年第一次看到DALLE 2生成的超现实图像时,作为一名长期使用GAN的开发者,我意识到生成式AI正在经历一场静默的革命。传统GAN虽然能生成惊艳的结果,但其训练过程就像在钢…...

深度神经网络(DNN)百科全书从“深“到“无限深“

一、开篇:深度的奇迹 2012 年 9 月 30 日。 ImageNet 挑战赛的结果在 Florence 公布。所有人都以为冠军会延续过去 3 年的传统——传统计算机视觉方法(SIFT、HOG、SVM)小幅领先。 但那一年,一个叫 AlexNet 的"怪物"出现了。8 层的卷积神经网络,Top-5 错误率 …...

Oracle 19c单实例安装后,别忘了做这5个安全与性能基础配置(CentOS 7版)

Oracle 19c单实例安装后的5个关键安全与性能配置指南(CentOS 7环境) 刚完成Oracle 19c的安装只是数据库管理的第一步。许多初级DBA常犯的错误是认为安装成功就意味着工作结束,实际上默认配置往往存在严重的安全漏洞和性能隐患。本文将带您完成…...

Mac用户必看:免费开源的NTFS读写神器,3分钟解决跨平台文件传输难题

Mac用户必看:免费开源的NTFS读写神器,3分钟解决跨平台文件传输难题 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, moun…...

告别pip install torch:手把手教你离线安装PyTorch 1.5.1(含CUDA 9.2配置)

离线环境下的PyTorch 1.5.1实战部署指南:从依赖解析到CUDA配置 在科研机构封闭网络或企业开发环境中,离线安装深度学习框架往往成为阻碍项目推进的第一道门槛。PyTorch作为动态图计算的代表框架,其离线部署涉及Python环境管理、CUDA驱动适配…...

深度解析causal-conv1d:CUDA加速的因果深度卷积专业指南

深度解析causal-conv1d:CUDA加速的因果深度卷积专业指南 【免费下载链接】causal-conv1d Causal depthwise conv1d in CUDA, with a PyTorch interface 项目地址: https://gitcode.com/gh_mirrors/ca/causal-conv1d causal-conv1d是一个专为时间序列数据优化…...

移动端测试实战:App兼容性测试的全套解决方案

一、移动端App兼容性测试的核心价值与挑战在移动互联网生态中,设备碎片化、系统版本迭代加速、网络环境多样性等因素,使得App兼容性问题成为影响用户体验与产品口碑的关键变量。据行业数据统计,兼容性问题引发的用户投诉占比超过30%&#xff…...

【免费下载】 MySQL Connector/Java 8.0.29 驱动包

MySQL Connector/Java 8.0.29 驱动包 【下载地址】MySQLConnectorJava8.0.29驱动包 本仓库提供了一个用于Java应用程序连接MySQL数据库的JDBC驱动包。具体文件为 mysql-connector-java-8.0.29.jar,适用于MySQL数据库版本8.0.29。 项目地址: https://gitcode.com/o…...

Unpaywall:当学术研究遇上智能助手,如何一键解锁全球开放获取文献

Unpaywall:当学术研究遇上智能助手,如何一键解锁全球开放获取文献 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors…...

【免费下载】 MATLAB 3D 极坐标绘图示例:天线三维方向图【matlab下载】

MATLAB 3D 极坐标绘图示例:天线三维方向图 项目介绍 在科学计算和工程设计领域,MATLAB一直是数据可视化和仿真的强大工具。然而,当涉及到在三维空间中使用极坐标系统进行绘图时,MATLAB的标准绘图函数如surf和mesh就显得力不从心。…...

如何通过WindowResizer精准掌控Windows窗口尺寸布局

如何通过WindowResizer精准掌控Windows窗口尺寸布局 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在现代多任务工作环境中,Windows窗口尺寸的灵活性直接关系到工作效…...

从API密钥管理角度感受Taotoken控制台的安全与便捷

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从API密钥管理角度感受Taotoken控制台的安全与便捷 作为项目或团队的技术负责人,管理多个大模型服务的API密钥是一项既…...

Royal TSX 终极中文汉化包:让专业远程管理工具说中文的完整解决方案

Royal TSX 终极中文汉化包:让专业远程管理工具说中文的完整解决方案 【免费下载链接】Royal_TSX_Chinese_Language_Pack Royal_TSX的简体中文汉化包 项目地址: https://gitcode.com/gh_mirrors/ro/Royal_TSX_Chinese_Language_Pack Royal TSX 是一款功能强大…...

【免费下载】 探索三维世界的利器:Qt+OpenGL三维地形显示项目

探索三维世界的利器:QtOpenGL三维地形显示项目 项目介绍 在数字化的时代,三维地形显示技术已经成为地理信息系统(GIS)、游戏开发、虚拟现实等领域不可或缺的一部分。QtOpenGL三维地形显示项目 是一个开源的、跨平台的三维地形显示…...

HEIF Utility:当跨平台技术遇上真实世界的照片困境

HEIF Utility:当跨平台技术遇上真实世界的照片困境 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 你是否曾经历过这样的场景?用iPhone记…...

为什么你的Perplexity总搜不到知网核心期刊?97.6%用户忽略的3个元数据过滤阈值(附知网后台原始字段对照表)

更多请点击: https://intelliparadigm.com 第一章:Perplexity知网文献搜索失效的底层归因 Perplexity.ai 作为一款基于大模型的实时网络问答工具,其核心能力依赖于对公开网页内容的动态抓取与语义解析。然而当用户尝试通过 Perplexity 查询中…...

自适应滤波器提取胎儿心电信号的MATLAB及FPGA实现

自适应滤波器提取胎儿心电信号的MATLAB及FPGA实现 【下载地址】自适应滤波器提取胎儿心电信号的MATLAB及FPGA实现 本项目提供了一个完整的工程代码,用于实现自适应滤波器提取胎儿心电信号的MATLAB及FPGA实现。自适应滤波器是一种能够根据环境变化自动调整滤波器参数…...

Windows Audio服务启动报错‘193 0xc1’?可能是系统文件损坏了,试试这个修复流程

Windows音频服务报错‘193 0xc1’深度修复指南:从原理到实战 当你在Windows系统中遭遇音频服务无法启动,并看到神秘的"193 0xc1"错误代码时,这通常意味着系统核心组件出现了问题。不同于普通的驱动故障,这类错误往往需要…...

【Perplexity医疗搜索实战指南】:3大临床决策加速器与5个被90%医生忽略的精准检索技巧

更多请点击: https://codechina.net 第一章:Perplexity医疗搜索的核心价值与临床适配性 Perplexity医疗搜索并非通用搜索引擎的简单垂直化迁移,而是专为临床决策闭环设计的认知增强工具。其核心价值在于将海量异构医学文献、指南更新、药品说…...

细胞的“近距离对话大师”——Notch信号通路

在我们身体里,细胞并非孤立存在,它们通过信号通路精准沟通,其中Notch信号通路堪称细胞间的“近距离对话大师”,从果蝇到人类都高度保守,不靠远距离信号扩散,仅靠相邻细胞“面对面接触”,就能掌控…...

【亲测免费】 Zynq平台网络芯片RTL8211FD配置资源推荐

Zynq平台网络芯片RTL8211FD配置资源推荐 【下载地址】Zynq使用网络芯片RTL8211FD资源文件 本仓库提供了一个用于Zynq平台使用网络芯片RTL8211FD的资源文件。由于Xilinx的源代码默认不支持RTL8211FD,本资源文件中的程序可以替代Xilinx的默认配置,使得Zynq…...