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

一:函数的对比

scanf:从标准输入流中读取格式化数据(通常是键盘)
printf:将格式化数据输出到标准输出流(通常是屏幕)

fscanf:适用于所有输入流的格式化输入函数(一般从指定的文件流中读取格式化的数据)
fprintf:适用于所有输出流的格式化输出函数(一般将格式化的数据写入到指定的文件流中)

sscanf:从字符串中读取格式化的数据
sprintf:从字符串中读取格式化的数据

标准输入流:即从键盘上输入的数据流

标准输出流:从屏幕上输出的数据流

所有输入流:除了键盘,还可以读取文件(等流)里的数据

所有输出流:除了屏幕,还可以写在文件(等流)里的数据

二:函数的使用

1,printf函数

参数解释: 

  • const char *format:这是一个指向格式字符串的指针。格式字符串定义了如何格式化后续的参数。格式字符串可以包含普通字符和格式说明符(以 % 开头的子序列)。
  • ...:这表示函数接受可变数量的参数。这些参数的类型和数量由格式字符串决定

返回值:

  1. 成功写入:当写入操作成功时,函数会返回成功写入的字符总数。这通常是一个非负整数,表示成功写入了多少个字符。
  2. 写入错误:如果发生写入错误(例如,磁盘空间不足、文件无法访问等),则“错误指示器”(ferror)会被设置,并且函数会返回一个负数。这个负数可能是一个特定的错误代码,用于指示发生了哪种类型的错误。具体的错误代码和含义可能因编程语言和库的不同而有所差异。

 函数使用展示:

将一个结构体的内容打印到屏幕上

 2,scanf函数

参数解释:

  • format:一个格式字符串,它定义了应该如何读取输入数据。格式字符串可以包含各种格式说明符(如 %d 用于整数,%f 用于浮点数,%s 用于字符串等)。
  • ...(可变参数):这些参数是指向存储输入数据的变量的指针。它们的类型和数量必须与格式字符串中的格式说明符相匹配。

返回值:

  1. “On success, the function returns the number of items of the argument list successfully filled.”

    • 当函数成功执行时,它会返回成功填充的参数列表中的项目数量。
  2. “This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.”

    • 这个数量可能与预期的项目数量相匹配,但由于匹配失败、读取错误或达到文件末尾,它可能会更少(甚至为零)。
      • 匹配失败:可能是输入数据与期望的格式或模式不匹配。
      • 读取错误:可能是由于文件读取问题,例如文件损坏、磁盘错误等。
      • 达到文件末尾:当读取到文件的末尾时,可能没有足够的项目来填充参数列表。

 函数使用展示:

从键盘上读取数据放进结构体里

3,fprintf函数

参数解释:

  1. FILE *stream:这是一个指向 FILE 对象的指针,它代表了一个打开的文件或其他输出流(例如标准输出 stdout)。
  2. const char *format:这是一个 C 字符串,指定了如何格式化后续的参数。字符串中可以包含普通字符和格式说明符(以 % 开头的子序列)。
  3. ...:这表示函数接受可变数量的参数。这些参数的数量和类型由 format 字符串中的格式说明符确定。

返回值:

  • fprintf 函数返回一个整数,表示成功写入的字符数(不包括字符串的终止字符)。如果出现错误,返回值可能是一个负数。

函数使用展示:

将一个结构体的内容打印到文件名为data.txt 的文件上

4,fscanf函数

参数解释:

  1. FILE *stream:这是一个指向要读取数据的文件流的指针。通常,这个文件流是通过 fopen 函数打开的。
  2. const char *format:这是一个格式字符串,它定义了应该如何读取和解析数据。格式字符串中的每个格式说明符都对应一个额外的参数,这些参数应该指向已经分配了空间的变量,用于存储从文件流中读取的数据。

返回值:

  1. On success, the function returns the number of items of the argument list successfully filled.

    • 当函数成功执行时,它会返回成功填充的参数列表中的项目数量。
  2. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.

    • 这个数量可能与预期的项目数量相匹配,但由于匹配失败、读取错误或达到文件末尾,它也可能更少(甚至为零)。

    • Matching failure: 当尝试匹配某些内容(例如,从输入中查找特定的模式或字符串)时,可能会失败。这可能是因为输入数据与预期不匹配。

    • Reading error: 在读取输入数据时可能会出现错误,例如,由于磁盘问题、文件损坏或网络问题。

    • Reach of the end-of-file: 如果函数试图读取文件,并且已经到达了文件的末尾,那么它将停止读取,并且返回的项目数量可能会少于预期。

  3. If a reading error happens or the end-of-file is reached while reading, the proper indicator is set (feof or ferror).

    • 如果在读取过程中发生读取错误或到达文件末尾,将设置适当的指示器(例如,feof或`ferror

函数使用展示:

从一个文件名为data.txt 的文件中读取内容放到结构体上

5,sprintf函数

参数解释: 

  1. char *str:这是一个指向将要存储格式化字符串的缓冲区的指针。这个缓冲区必须足够大,以容纳由 format 参数和后续参数指定的文本。
  2. const char *format:这是一个格式字符串,指定了如何格式化后续参数。这个字符串中的格式说明符(如 %d%s 等)被后续参数的值所替换。
  3. ...:这是一个可变参数列表,表示 sprintf 函数可以接受任意数量和类型的参数,这些参数的数量和类型由 format 字符串决定。

 返回值:

  • 当操作或函数成功执行时,它会返回已经写入的字符的总数。这个数值表示你向某个地方(可能是内存、文件等)写入了多少字符。

函数使用展示:

将一个结构体的内容写入一个字符串

6,sscanf函数

参数解释; 

  • s:这是你要从中读取数据的字符串。
  • format:这是一个格式字符串,它指定了如何解析 s 中的数据。这个格式字符串可以包含普通的字符(它们必须匹配 s 中的字符)以及格式说明符(它们告诉 sscanf 如何解析和存储数据)。
  • ...:这是一个可变参数列表,它提供了存储从 s 中读取的数据的位置。这些参数应该是指向已分配对象的指针,这些对象的类型应与 format 字符串中的相应格式说明符相匹配。

返回值;

        函数在执行成功时的返回行为。它可能返回成功处理或填充的参数数量,这个数量可能与预期的数量相匹配,也可能更少。如果在处理数据之前发生输入错误,函数会返回EOF。 

函数使用展示:

将一个字符串的内容写入一个结构体


 

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

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

相关文章

网络安全入门 5 天速成教程_ WEB 安全渗透攻防技术

前言 随着 Web 技术发展越来越成熟,而非 Web 服务越来越少的暴露在互联网上,现在互联网安全主要指的是 Web 安全。 为了自身不“裸奔”在大数据里,渐渐开始学习 Web 安全,在学习 Web 安全的过程中,发现很大一部分知识…

Codeforces Round 838 (Div. 2) D. GCD Queries

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

实验室开放项目实验报告-01

实验室开放项目实验报告 实验名称&#xff1a;实验一输入输出格式 实验目的&#xff1a;熟练掌握程序设计竞赛中通常采用的输入输出格式和掌握不同格式输入输出数据的处理方法 实验内容&#xff1a; 在本地电脑中新建一个文件夹&#xff0c;用于存放C源程序&#xff0c;文件…

【进程OI】基本文件操作的系统调用

文章目录 前言open参数flags参数mode writereadclose 前言 当用户想要向磁盘中的文件读写数据&#xff0c;就必须要得到操作系统的允许。同样&#xff0c;操作系统为了能让用户去对文件进行打开、读写、关闭等操作&#xff0c;向上提供了相应的系统调用的接口。C、JAVA、C等语…

27. UE5 RPG同步面板属性(三)

在前两篇中&#xff0c;我们在C中实现了对GameplayTag的创建&#xff0c;并且创建DataAsset存储数据&#xff0c;按照之前的规划&#xff1a; 首先我们需要通过c去实现创建GameplayTag&#xff0c;这样可以在c和UE里同时获取到Tag创建一个DataAsset类&#xff0c;用于设置tag对…

2024/3/29打卡 填充——贪心

目录 题目 思路 代码 先来说下什么时候使用贪心和动态规划&#xff1a; 一个题目当寻找答案的过程中有大约 2的指数级&#xff08; 2^n&#xff09;个方案的时候&#xff0c;可以考虑用贪心和动态规划问题&#xff08;其实&#xff0c;我现在还不知道什么时候用 dfs 和 动态…

深度学习pytorch——数据增强(持续更新)

背景介绍 大量的数据是防止过拟合的关键&#xff0c;但是我们如何去获取大量的数据&#xff0c;是自己去拍摄、录制吗&#xff1f;显然这种方式有极高的成本。我们可以对同一张图片进行变换得到多张图片&#xff0c;比如原来只有10张图片&#xff0c;通过变换变成了20张图片&a…

2023年第十四届蓝桥杯大赛软件类省赛C/C++研究生组真题(代码完整题解)

C题-翻转⭐ 标签:贪心 简述:如果 S 中存在子串 101 或者 010,就可以将其分别变为 111 和 000,操作可以无限重复。最少翻转多少次可以把 S 变成和 T 一样。 链接: 翻转 思路:要求步骤最少->S每个位置最多修改一次->从头开始遍历不匹配就翻转->翻转不了就-1 …

低代码平台与自动化软件开发的关系

引言 随着信息技术的不断发展&#xff0c;软件开发领域也在不断演进。在追求更高效、更快速的软件开发过程中&#xff0c;低代码平台和自动化软件开发技术日益受到关注。低代码平台以其可视化开发界面和快速构建应用的能力&#xff0c;为非专业开发人员提供了参与软件开发的机会…

Typora for Mac/Win:让Markdown编辑更高效,创作更自由

在数字化时代&#xff0c;文本编辑已成为我们日常生活与工作中的重要环节。Markdown作为一种轻量级标记语言&#xff0c;以其简洁、易读、易写的特性&#xff0c;受到了广大用户的喜爱。而Typora&#xff0c;作为一款专为Markdown设计的文本编辑器&#xff0c;更是让Markdown编…

Midjourney绘图欣赏系列(十四)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

香港服务器怎么看是CN2 GT线路还是CN2 GIA线路?

不知道有没有小伙伴们注意过&#xff0c;很多人在租用香港服务器的时候都习惯性选择 CN2 线路&#xff1f;仿佛香港服务器是否采用 CN2 线路成为个人企业选择香港服务器的一个标准。其实&#xff0c;香港服务器有CN2、优化直连(163)、BGP多线(包含了国际和国内线路)&#xff0c…

(C语言)fgets与fputs函数详解

目录 1. fputs函数详解 1.1 向文件流输入数据 1.2 向标准输出流输出数据 2. fgets函数详解 2. 1 从文件流中得到数据 2.2 从标准输入流读取数据 1. fputs函数详解 头文件&#xff1a;stdio.h 函数有两个参数&#xff1a;str 与 stream 作用&#xff1a;写一串字符串到流…

零拷贝技术、常见实现方案、Kafka中的零拷贝技术的使用、Kafka为什么这么快

目录 1. 普通拷贝 2. 数据拷贝基础过程 2.1 仅CPU方式 2.2 CPU&DMA方式 3.普通模式数据交互 4. 零拷贝技术 4.1 出现原因 4.2 解决思路 4.2.1 mmap方式 4.2.2 sendfile方式 4.2.3 sendfileDMA收集 4.2.4 splice方式 5. Kafka中使用到的零拷贝技术 参考链接 本…

【学习笔记】java项目—苍穹外卖day03

文章目录 苍穹外卖-day03课程内容1. 公共字段自动填充1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 1.4 功能测试1.5 代码提交 2. 新增菜品2.1 需求分析与设计2.1.1 产品原型2.1.2 接口设计2.1.3 表设计 2.2 代码开发2.2.1 文件上传实现2.2.2 新…

uniapp 微信小程序 输入框跟随手机键盘弹起

需求&#xff1a;手机键盘弹起后&#xff0c;页面底部的输入框跟随弹起&#xff0c;且页面不被顶上去 html: <textareaclass"textinput"placeholder-class"input-place"auto-height:maxlength"2000"v-model"text"placeholder"…

微机原理-基于8086倒计时多路抢答器系统

**单片机设计介绍&#xff0c;微机原理-基于8086倒计时多路抢答器系统 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 微机原理-基于8086倒计时多路抢答器系统概要主要关注于利用8086微处理器设计和实现一个具有倒计时功能的多路抢答器系统…

鸿蒙OS开发实例:【消息传递】

介绍 在HarmonyOS中&#xff0c;参考官方指导&#xff0c;其实你会发现在‘指南’和‘API参考’两个文档中&#xff0c;对消息传递使用的技术不是一对一的关系&#xff0c;那么今天这篇文章带你全面了解HarmonyOS 中的消息传递 概况 参照官方指导&#xff0c;我总结了两部分…

关于Oracle VM VirtualBox无法查询IP地址的原因

1.如下&#xff0c;输入ifconfig却没有显示我框住的显示IP。 2.原因有可能&#xff1a; &#xff08;1&#xff09;主机没连上网络。 &#xff08;2&#xff09;虚拟机网络设置不正确。

生成 SSH 公钥

Windows 用户建议使用 Windows PowerShell 或者 Git Bash&#xff0c;在 命令提示符 下无 cat 和 ls 命令。 1、通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t ed25519 -C "Gitee SSH Key"-t key 类型 -C 注释 输出&#xff0c;如&#xff1a; 中间…