【C语言】printf、fprintf、sprintf,scanf、fscanf、sscanf的区别

news2024/10/8 17:17:20

目录

前言

printf、fprintf、sprintf

printf

 fprintf

sprintf

scanf、fscanf、sscanf

 scanf

fscanf

sscanf


前言

这几个函数曾出现在面试中,因为函数名都差不多,所以很让人迷惑啊~

下面我们逐个分析。

printf、fprintf、sprintf

这三个函数的主要区别在于:输出的目标不同。

printf:将格式化数据输出到标准输出流(一般是屏幕)

fprintf:用于向文件中写入格式化数据(适用于所有输出流)

sprintf:将数据格式化为字符串并存储在指定区域

printf

int printf( const char *format [, argument]... );

因为printf的第一个参数是const char*,所以下面这两种写法是等价的。

printf("hello world\n");

char arr[] = "hello world\n";
printf(arr);

 fprintf

int fprintf( FILE *stream, const char *format [, argument ]...);

相比于printf的参数列表,fprintf仅多了一个文件指针的参数,这个参数就指明了它要输出的地方。

fprintf(stdout, "hello world\n");

 前面说到,fprintf适用于所有文件输出流,所以它是可以完成printf的功能的。以下这两总写法是等价的。

printf("hello world\n");
fprintf(stdout, "hello world\n");

sprintf

int sprintf( char *buffer, const char *format [, argument] ... );

 下面看看如何使用。

int year  = 2024;
char* hope = "world peace";

char arr[20];
sprintf(arr, "%d %s", year, hope);
printf("%s\n", arr);//2024 world peace

scanf、fscanf、sscanf

这三个函数的主要区别在于:读取数据的来源不同。

scanf:从标准输入流(键盘)读取格式化数据

fscanf:从文件流中读取格式化数据(适用于所有流)

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

 scanf

int scanf( const char *format [,argument]... );

 在使用时,左边区域是格式化控制,右边是指定存放的位置(地址)。

int input;
scanf("%d", &input);
scanf("%d", input);//error

fscanf

int fscanf( FILE *stream, const char *format [, argument ]... );

前面说过,fscanf适用于所有流,所以它可以实现scanf的功能。

int input;
scanf("%d", &input);
fscanf(stdin, "%d", &input);

上面这两行代码是等价的。

sscanf

int sscanf( const char *buffer, const char *format [, argument ] ... );

从字符串中读取格式化数据,下面演示一下:

char arr[] = "hello 2024";
int year;
char str[20];
sscanf(arr, "%s %d", str, &year);
printf("%s ", str);
printf("%d\n", year);
//hello 2024

完~

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

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

相关文章

初学51单片机之UART串口通信

CSDN其他博主的博文(自用)嵌入式学习笔记9-51单片机UART串口通信_51uart串口通讯-CSDN博客 CSDN其他博主的博文写的蛮好,如果你想了解51单片机UART串口可以点进去看看: UART全称Universal Asynchronous Receiver/Transmitter即通…

agents 分类

一、分类 自动agent、半自动agent、领域、自定义sop和支持人为干预的agent。 先泼个冷水,目前这些agent项目都是实验品,发展还没有做知识库问答相关开源项目那么成熟, 二、全自动agent autoGPT、loopGPT、babyAGI 全自动agent就是人类不可…

设计模式8-桥模式

设计模式8-Bridge 桥模式 由来与目的模式定义结构代码推导1. 类和接口的定义2. 平台实现3. 业务抽象4. 使用示例总结1. 类数量过多,复杂度高2. 代码重复3. 不符合单一职责原则4. 缺乏扩展性改进后的设计1. 抽象和实现分离(桥接模式)2. 抽象类…

Python爬虫:BeautifulSoup的基本使用方法!

1.简介 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析“标签树”等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup…

一款面向程序员群体的AI问答产品火了!主打专业、正确率保障,消灭AI回答不可靠的问题

一直以来,无论是GPT、Claude还有国内的AI对话产品,都一直被诟病“AI回答不可靠”,尤其是在程序员这类对AI回答的可靠性要求极高的场景(毕竟AI给代码里埋个bug,背锅的还是程序员)。 而且当AI给的代码不可靠…

Androd 12 (MTK)修改屏幕物理分辨率Physical Size

1.需求说明 Android目前显示分辨率为480*800,立项表中像素为720*1280。请修改屏幕分辨率到指定大小。 2.思路分析 如果从手机修改对应的分辨率,必须自上而下的进行修改分为两个层面进行修改。 1.驱动底层 2.软件上层 3.结局方法与相关说明 查看当…

Vue打包文件dist放在SpringBoot项目下运行(正确实现全过程)(下)

在上一篇中,实现了Vue打包文件dist放在SpringBoot项目下运行。 Vue打包文件dist放在SpringBoot项目下运行(正确实现全过程)(上) 问题 路由刷新会产生404的问题。 原因 vue开发的应用,采用的是SPA单页…

c语言的简易教法—— 函数递归

文章目录 一、什么是递归?1.1递归的思想1.2递归的限制条件 二、递归案例2.1 案例1:求n的阶层2.1.1分析2.1.2 递归函数(Fact)的代码实现2.1.3 测试:main函数实现2.1.4 运行结果和画图推演2.1.5 扩展:迭代方法…

纹波电流与ESR:解析电容器重要参数与应用挑战

电解电容纹波电流与ESR(Equivalent Series Resistance)是电容器的重要参数,用来描述电容器对交流信号的响应能力和能量损耗。电解电容纹波电流是指电容器在工作时承受的交流信号电流,而ESR则是电容器内部等效电阻,影响…

2024年PMP报考需要什么条件?怎么报名?

PMP报名条件要求不高,只要满足下面两个条件: 1、35个PDU (需要有 PMI 授权的机构颁发) 2、项目经验 学士学位需要 4500 个小时的项目管理经验,3年工作经验; 非学士学位需要 7500 个小时的 项目管理经验&…

机器视觉:(1) 初识Roboflow(使用详解一)获取数据集(最新)

一:访问地址 [1] Roboflow官网:官网地址 [2]YOLOv8 项目地址github源码地址 [3]YOLOv8 官方教程官网教程地址 二:获取数据集步骤 1.访问官网地址:进入首页面,点击登录 2.注册过程省略了,按步骤走就可以…

Qt:18.状态栏(状态栏介绍、代码方式创建状态栏、在状态栏显示临时信息、在状态栏创建控件)

目录 1.状态栏介绍: 2.代码方式创建状态栏: 3. 在状态栏显示临时信息: 4.在状态栏创建控件: 1.状态栏介绍: Qt 状态栏是 QMainWindow 窗口的一部分,通常用于显示临时信息,如应用程序的状态、…

myeclipse开发ssm框架项目图书管理系统 mysql数据库web计算机毕业设计项目

摘 要 随着计算机的广泛应用,其逐步成为现代化的标志。图书馆的信息量也会越来越大,因此需要对图书信息、借书信息、还书信息等进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高高…

【YashanDB知识库】YashanDB 开机自启

【问题分类】 YashanDB 开机自启 【关键字】 开机自启,依赖包 【问题描述】 数据库所在服务器重启后只拉起monit、yasom、yasom进程,缺少yasdb进程: 【问题原因分析】 数据库安装的时候未启动守护进程 【解决 / 规避方法】 进入数据库之前…

分别通过LS和RML进行模型参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 最小二乘法(LS)参数辨识 4.2 递归最大似然估计(RML)参数辨识 5.完整程序 1.程序功能描述 分别通过LS和RML进行模型参数辨识matlab仿真,仿真输出参数辨识的误差&#xff0c…

【Linux】Linux背景历史

Linux背景历史 Linux背景Linux是什么?计算机的发展unix发展史Linux发展史开源Linux官网以及版本更替Linux企业应用现状 Linux环境的安装 Linux背景 Linux是什么? Linux(Linux Is Not UniX),一般指GNU/Linux,是一种免费使用和自由…

边缘计算网关:一种高效安全的工业物联网解决方案-天拓四方

在工业物联网(IIoT)领域,数据处理和实时响应的需求日益增长,尤其是在智能制造、远程监控和预测性维护等场景中。边缘计算网关作为一种前端数据处理和决策设备,正逐渐成为满足这些需求的理想解决方案。 在一个大型制造…

前端JS特效第30波:jquery图片列表按顺序分类排列图片组效果

jquery图片列表按顺序分类排列图片组效果&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &…

智慧景区综合解决方案PPT(53页)

智慧景区综合解决方案摘要 建设背景 智慧景区综合解决方案在文旅融合、政策支撑和行业背景三大背景下提出。文旅融合强调文化和旅游的结合&#xff0c;政策支撑如《“十三五”全国旅游信息化规划》和《江苏省文化和旅游厅2019年工作要点》为智慧旅游提供指导&#xff0c;行业背…

C++相关概念和易错语法(18)(array、模板)

1.array &#xff08;1&#xff09;普通数组的劣势 当我们直接越界修改值时&#xff0c;一般会在编译时就被拦截 但是越界访问&#xff0c;只要访问距离不算特别大&#xff0c;那么也可以越界访问 当我们不直接越界修改或访问&#xff0c;间接去访问和修改能越界非常远 这里的…