sscanf与sprintf函数

news2024/11/14 23:36:30

在这里插入图片描述
本期介绍🍖
主要介绍:scanf()、printf()、fscanf()、fprintf()、sscanf()、sprintf()这三对输入/输出函数的区别,而且详细讲解了sscanf()、sprintf()这两个函数的应用场景👀。


概述🍖

  在C语言的输出和输入库中,有三对及其相似的库函数:printf()scanf()fprintf()fscanf()sprintf()sscanf()。它们实现不同的功能,但会经常被搞混。接下来我就带着大家区分一下这些函数。


详解🍖

  首先,我们最熟悉的因该是scanf()printf(),是针对标准输入(输出)流的函数,也就是默认输入是从键盘上读取的数据、输出是向屏幕上输出数据的。函数的类型如下图所示:

  1. int scanf( const char *format [,argument]… );
  2. int printf( const char *format [, argument]… );

  接着,相对比较熟悉的是,之前在文件操作这章所学的fscanf()fprintf(),这是一对针对于所有输入(输出)流的格式化输入(输出)函数,也就是说你可以用这一对函数对所有的外部设备进行输入(输出)操作,前提是你能提供该外部设备所对应的“”。函数的类型如下所示:

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

  最后,还需要讲解一对输入(输出)函数sscanf()sprintf()。相较于前两对函数而言sscanf()sprintf() 并不用于与外部设备之间进行数据传输,而是用于实现数据与字符串之间的转换。函数格式如下所示:

在这里插入图片描述

sprintf() :将一个格式化的数据,转化成字符串。
格式: int sprintf( char *buffer, const char *format [, argument] … );

  其中sprintf()的第一个参数char* buffer是一个字符指针,指向用于存放数据转换后字符串的字符数组,第二个参数const char *format [, argument] ... printf() 中参数的用法一致。下面举个例子:

#include<stdio.h>

struct S
{
	char name[20];
	int age;
	float score;
};

int main()
{
	struct S s = { "zhangsan",23,56.1 };
	char arr[100] = { 0 };
	sprintf(arr, "%s %d %f", s.name, s.age, s.score);
	printf("%s\n", arr);
	return 0;
}

在这里插入图片描述

sscanf() :从一个字符串中,转化出格式化的数据。
格式: int sscanf( const char *buffer, const char *format [, argument ] … );

  其中sscanf()的第一个参数char* buffer是一个字符指针,指向需要被转换成格式化数据的字符数组,第二个参数const char *format [, argument] ... scanf() 中参数的用法一致。下面举个例子:

#include<stdio.h>

struct S
{
	char name[20];
	int age;
	float score;
};

int main()
{
	struct S s = { "zhangsan",23,56.1 };
	char arr[100] = { 0 };
	struct S save = { 0 };
	sprintf(arr, "%s %d %f", s.name, s.age, s.score);
	printf("%s\n", arr);
	sscanf(arr, "%s %d %f", save.name, &(save.age), &(save.score));
	printf("%s %d %f\n", save.name, save.age, save.score);
	return 0;
}

在这里插入图片描述


  我想肯定会有人问:这两个函数的设计的目的是什么呀?谁会平白无故让数据的转化成字符串,从字符串中读取数据,这不多此一举嘛。 当然这么想无可厚非,因为你还没有深入的了解前端数据的存储形式,前端与后端之间数据的传输,当学习的代码越来越多,见识越来越广的时候,自然而然就明白了。下面来讲解一下这两个函数的应用场景

  当我们想开发一个应用软件的时候,需要使用BS结构,也就是浏览器、服务器结构。当前端页面获取信息的时候,是以字符串的形式获取的,就譬如:“姓名” “年龄” “体重”。然后会进行组合,组合成一个字符串,譬如:“姓名 年龄 体重”。最终将这个字符串传递给后端,后端可能是以结构的形式存储的,所以就需要用到像sscanf()这样的函数,从字符串中读取数据。同样的如果我们想将后端的数据呈现到前端页面上去,就需要通过像sprintf()这样的函数,将数组转换成字符串然后传递给前端。如下图所示:

在这里插入图片描述


在这里插入图片描述

这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。

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

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

相关文章

基于安卓的公司员工考勤系统的设计与实现

目 录 1 绪论 1 1.1 选题背景 1 1.2 研究现状 2 1.3 研究意义 3 1.4 研究内容 3 2 相关的理论和技术 4 2.1 JAVA技术与安卓介绍 4 2.2 Android的开发 5 2.3 Android常用的列表组件 5 2.4 Android所需知识的理解 8 2.4.1 自定义控件 8 2.4.2 进一步说明 10 3 系统分析 12 3.1系统…

生命在于折腾——Fishing软件的编写(易语言)

本篇文章仅用于学习交流&#xff0c;不得用于其他违规用途。 一、钓鱼软件是什么&#xff1f; 钓鱼软件是通常以精心设计的虚假网页引诱用户上当,达到盗取银行账号、信用卡号码等目的,属于违法行为。 钓鱼通常指伪装成银行及电子商务,窃取用户提交的银行帐号、密码等私密信息…

【计算机网络】网络基础(二)

本章主要对TCP/IP模型的网络层的初阶内容进行概括性讲述。 1、IP地址 当我们在配置计算机的IP地址时&#xff0c;是否会遇到下面的情形&#xff1a; 这是由于IP地址配置不正确造成的。在网络通信中&#xff0c;IP地址用来识别终端主机及网元设备&#xff0c;为了保障互联网正…

Siamese Neural Network (SNN: 孪生神经网络)

【学习参考】&#xff1a; https://blog.csdn.net/MyArrow/article/details/122539749https://blog.csdn.net/MyArrow/article/details/122539749 Siamese network 孪生神经网络--一个简单神奇的结构 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/35040994 【Siamese和Ch…

Matlab reconstruct signal form sample points, convulsion

Usually we describe reconstruction as interpolation, and there are many approaches to reach it. In this article, I introduce a new method- convulsion Main signal function f(x)sin(15πxπ/10)f(x)sin(15\pi x\pi/10)f(x)sin(15πxπ/10) Convulsion Method Des…

半监督短语挖掘:autophrase是什么?

论文地址&#xff1a;《Automated Phrase Mining from Massive Text Corpora》 git地址&#xff1a; GitHub - shangjingbo1226/AutoPhrase: AutoPhrase: Automated Phrase Mining from Massive Text Corpora 目录 简介&#xff1a; 1.短语需要满足什么条件&#xff1f; …

Java项目:ssm图书商城系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目分为前后台&#xff0c;前台主要功能包括&#xff1a; 普通用户的注册、登录&#xff1b; 轮播图展示、图书列表、图书详情、加入购物车、…

【Java实战】泄露用户隐私被罚巨款?系统被攻击?如何避免?

目录 一、前言 二、安全规约 1.【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 2.【强制】用户敏感数据禁止直接展示&#xff0c;必须对展示数据进行脱敏。 3.【强制】用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定&#xff0c;防止 SQL 注入…

python带你对北京二手房进行数据分析,看看大概都什么价位

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 今天我们的目的想必大家看标题就能明白了~ 准备 首先&#xff0c;我们要提前准备好数据 然后打开我们的数据分析工具&#xff1a; Jupyter 代码及效果展示 导入模块 # 导入做数据处理的模块pandas import pandas as pd …

java计算机毕业设计ssm社会救援力量信息管理统计系统6q3cn(附源码、数据库)

java计算机毕业设计ssm社会救援力量信息管理统计系统6q3cn&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支…

flask入门教程之小项目实践

前面的2个章节对flask的一些简单操作进行了说明&#xff08;后面再慢慢补充进阶内容&#xff09; flask入门教程之请求与响应 flask入门教程之数据库保存 这个章节主要是根据前2个章节学到的内容&#xff0c;进行一个简单的学生信息增删改查的项目实践。 项目的简单介绍&#…

学习Java编程知识 必知要点

Java 是全球最受欢迎的编程语言之一&#xff0c;在世界编程语言排行榜 TIOBE 中&#xff0c;Java 一直霸占着前三名&#xff0c;有好多年甚至都是第一名。那么如此强大的Java你真的了解他的知识体系吗&#xff1f;他的学习路线你知道吗&#xff1f; 1. Java虚拟机——JVM JVM&a…

启动eureka服务端客户端报java.net.ConnectException: Connection refused: connect的错误

Request execution failed with message: java.net.ConnectException: Connection refused: connect1.先检查eureka服务端和客户端模块中的pom文件中是否引入了相对应的server和client的依赖 2.主启动类上是否加了对应启动注解&#xff1a; EnableEurekaServer //服务端的启动…

frp内网穿透搭建-宝塔版

一、搭建frp准备 下载frp部署文件&#xff1a;https://github.com/fatedier/frp/releases把防火墙安全端口打开&#xff0c;默认7500&#xff0c;7000&#xff0c;其他的自行设置打开&#xff0c;如阿里云服务器要打开端口规则。 二、配置frps服务端 把frps、frps.ini、LICE…

Java并发编程—java异步Future的迭代过程

在我们java多线程中&#xff0c;我想做一件事儿&#xff0c;但是我又不想影响主线程的执行&#xff0c;很多铁子都会想到用异步任务完成&#xff0c;这个时候我们的主角FutureTask就登场了。 一、FutureTask介绍 FutureTask提供了对Future的基本实现&#xff0c;是一个可取消的…

aws batch 在eks上配置计算环境和提交任务

文档 Getting started with Amazon Batch on Amazon EKSAmazon EKS jobsMemory and vCPU considerations for Amazon Batch on Amazon EKS batch不会管理集群&#xff0c;只是会管理节点&#xff08;自动扩缩&#xff09;并运行任务。batch在eks中单独管理自身资源&#xff0…

异常Exception

1.异常是什么&#xff1f; 程序中可能出出现的问题 2.异常体系的最上层父类是谁&#xff1f;异常分为几类 父类&#xff1a;Exception 异常分为两类&#xff1a;编译时异常、运行时异常 3.编译时异常和运行时异常的区别 编译时异常&#xff1a;除了RuntimeException和他的子类…

华为悦盒ec6108v9c使用ADB卡刷Linux(Ubuntu)

1. adb连接华为ec6108v9c&#xff1a; adb连接盒子IP: adb connect 192.168.3.4进入adb shell: adb shell在安卓后台终端输入以下命令&#xff0c;读取盒子的 reg name 管脚对应名称: cat /dev/block/mmcblk0p1 | grep -a hi3798m 2. 用Hitool工具制作对应你盒子reg名称的烧…

Python测试进阶(一)

文章目录测试框架pytestMarkskip参数化异常处理数据驱动Allure集成生成报告Fixture基操作用域yield数据共享自动应用参数化ini运行规则配置命令行参数指定/忽略执行目录配置日志插件开发常用插件分布式并发自定义插件打包发布hook小结测试框架 先了解unittest问题分析 自动化测…

SAS,Stata,HLM,R,SPSS和Mplus分层线性模型HLM分析学生受欢迎程度数据

全文链接&#xff1a;http://tecdat.cn/?p10809本文用于比较六个不同统计软件程序&#xff08;SAS&#xff0c;Stata&#xff0c;HLM&#xff0c;R&#xff0c;SPSS和Mplus&#xff09;的两级分层线性模型的过程和输出&#xff08;点击文末“阅读原文”获取完整代码数据&#…