C语言sscanf、fscanf、scanf和sprintf、fprintf、printf函数的区别与相似分析

本文详细介绍了C语言中的scanf,fscanf,sscanf,printf,fprintf,sprintf等输入输出函数,分别讲解了它们的功能、参数和用法,以及如何在实际编程中运用这些函数处理数据和文件操作。
摘要由CSDN通过智能技术生成

一.scanf,fscanf和sscanf

1.scanf

首先scanf我们的很熟悉,他就是从键盘上输入数据,准确的来说就是:

从标准输入(键盘)读取格式化的数据。

int main()
{
	int x = 0;
	scanf("%d", &x);
	return 0;
}

2.fscanf

而fscanf就比scanf高级了一点,可以说是fscanf包含了scanf的功能,对于这个函数的定义是这样子的:

从所有的输入流读取格式化的数据。

我们可以查看一下fscanf-cpulspuls中的解释和参数:

释义:从流中读取数据,并根据参数格式将它们存储到附加参数所指向的位置。附加参数应指向格式字符串中的相应格式说明符指定的类型已分配的对象。

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

这里的参数如果看不懂,我们就可以进行对比去学习,我们可以打开scanf的说明去看一下对比一下:

 

实际上fscanf就多了一个FILE * 的参数,也就是打开的文件的地址参数,所有当我们进行使用的时候,我们可以先像scanf一样写出来,然后再在前面加上一个FILE * 的参数就好了。

例子:

我们可以打开文件,在输入流中读取到数据,然后打印出来看看:

//fscanf
struct S
{
	int n;
	double d;
};
int main()
{
	struct S s = {0};
	FILE* pf = fopen("data.txt", "r");//文本文件data.txt
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//读文件
	fscanf(pf, "%d %lf", &(s.n), &(s.d));
	printf("%d %lf\n", s.n, s.d);
	//关闭文件
	fclose(pf);
	pf = NULL;
}

3.sscanf

我们查一下这个函数的定义:

这里的意思就是从字符串中读取到格式化的数据,也就是说我们输入进去的数据,sscanf会转化成字符串的形式。也就是:

从字符串中读取一个格式化的数据。

int sscanf ( const char * s, const char * format, ...);

而对于参数我们可以再对比一下,前面的fscanf就是多了一个FILE *的指针,而现在这里就是改成了字符指针,也就是从字符指针中读一个数据,到后面的格式化数据里面去。

 

例子:

从字符数组里面拿数据进结构体,然后打印出来(这里要先理解下面的sprintf然后一起看):

struct S
{
	int n;
	double d;
	char name[10];
};
int main()
{
	char arr[100] = { 0 };
	struct S tmp = { 0 };
	struct S s = { 100, 3.14, "zhangsan" };
	//把一个格式化的数据转换成字符串
	sprintf(arr, "%d %lf %s", s.n, s.d, s.name);
	//打印
	printf("%s\n", arr);
	//从arr中的字符串中提取出一个格式化的数据
	sscanf(arr, "%d %lf %s", &(tmp.n), &(tmp.d), tmp.name);
	//打印
	printf("%d %lf %s\n", tmp.n, tmp.d, tmp.name);
	return 0;
}

二.printf,fprintf和sprintf 

 1.printf

printf就是一个打印函数,从键盘上输出,对于它来说就是:

把格式化的数据到标准输出(屏幕)上

int main()
{
	int x = 0;
	printf("%d", x);
	return 0;
}

2.fprintf 

fprintf同样是比printf高级一点,它可以输出到更多的地方,也就是包括着printf的功能,他的定义是:

把格式化的数据输出到所有输出流(屏幕/文件)上

同样的我们可以先查一下fprintf - cplusplus:

 

释义:将按格式指向的C字符串写入流。如果格式包括格式说明符(从%开始的子序列),则格式化后的附加参数将被格式化并插入到结果字符串中,替换各自的说明符。

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

同样经过对比之后,我们发现fprintf和printf也就是差了一个FILE *的参数,所以我们同样可以先按照printf的格式写,然后再加上参数,就可以很好的使用fprintf了。

例子:

这里将一些值输出到文件上,也就是当我们运行完代码之后,文件上就会拥有这些数据:

//fprintf(按某一种格式写入)
struct S
{
	int n;
	double d;
};
int main()
{
	struct S s = { 100, 3.14 };
	FILE* pf = fopen("data.txt", "w");//写入文本文件data.txt
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//写文件
	fprintf(pf, "%d %lf", s.n, s.d);
	//关闭文件
	fclose(pf);
	pf = NULL;
}

3.sprintf 

对于ssprintf,还是先看定义:

释义:在printf上使用格式时,使用相同的文本组成字符串,但内容不是打印出来,而是存储在str指向的缓冲区中的C字符串中。

实际上这里的意思就是:

把格式化的数据输出转换成字符串。

int sprintf ( char * str, const char * format, ... );

而对于这个函数参数,我们参照printf转换发现,这里就是多了一个字符指针,也就是从后面的输出的格式化中读数据,到前面的字符指针里面去。然后输出得到的就是字符串。

例子:

打印结构体的多种类型的数据:

struct S
{
	int n;
	double d;
	char name[10];
};
int main()
{
	char arr[100] = { 0 };
	struct S tmp = { 0 };
	struct S s = { 100, 3.14, "zhangsan" };
	//把一个格式化的数据转换成字符串
	sprintf(arr, "%d %lf %s", s.n, s.d, s.name);
	//打印
	printf("%s\n", arr);
    return 0;
}

我们以%s打印的,打印出来了:

 

 

 

 

 

 

 

 

 

 

 

2301_80038635
关注 关注
  • 31
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fprintfprintfsprintffscanfscanf、sscanf_格式化输入输出
03-30
fprintfprintfsprintffscanfscanf、sscanf_格式化输入输出
C语言scanf()和sscanf()函数详解
Flin
10-06 1874
sscanf()与scanf()类似,都是用于输入的,只是scanf()以键盘(stdin)为输入源,sscanf()以固定字符串为输入源 一:scanf() 头文件: #include <stdio.h> 函数原型: int scanf(const char *format,...); 函数功能:按指定格式从键盘输入数据,存入地址表指定的存储单元中,并按回车键结束。 函数参数:format 指定输入格式,后面跟要输入的变量的地址表,为不定参,用"..."表示。 函数返回.
sscanfscanf的用法区别
weixin_34221332的博客
07-05 439
1.sscanf() - 从一个字符串中读进与指定格式相符的数据.2.函数原型:   Int sscanf( const char *, const char *, ...);   int scanf( const char *, ...);3.sscanfscanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。常见用...
C语言fscanf 和 fprintf (文件顺序读写)
最新发布
tianxiawushanu的博客
08-01 1542
本文将会讲解fscanf函数以及fprintf函数,还会讲解scanf / fscanf / sscanf之间的区别以及printf / fprintf / sprintf之间差异。
C语言scanf和sscanf,sscanf函数scanf函数区别
weixin_39966765的博客
05-25 790
sscanfscanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。sscanf可以实现更丰富的功能,最起眼的应该是类似于正则表达式的功能:第一个参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了...
字符串输入函数scanf( )与sscanf( )的区别
qq_64797754的博客
08-09 982
sscanfscanf区别scanf是以键盘作为输入源,sscanf是以字符串作为输入源。 注意:如果第一个字符匹配失败就会结束匹配,所以需要适当过滤操作 ; 如果开头是空格或\n等字符,会直接跳过这些空白字符;...
区分 scanfprintffscanf和fprintf、sscanfsprintf函数
weixin_62976968的博客
06-24 760
让你彻底搞懂输入输出函数,进一步提高你的代码功底!
sscanfsprintffscanf,fprintf 系列函数的用法小结 doc
09-26
### sscanfsprintffscanf,fprintf 系列函数的用法小结 #### 1. sscanf函数 **函数原型:** ```c int sscanf(const char *str, const char *format, ...); ``` **功能说明:** `sscanf`函数类似于`scanf`,...
目录版fprintf_sscanf_等格式化输入输出
09-14
带有目录查询的fprintfprintfsprintffscanfscanf、sscanf_格式化输入输出
c语言中常用的函数和头文件.docx
11-03
`stdio.h`头文件则包含了大量输入输出相关的函数,如文件操作(`fclose()`, `fflush()`, `fopen()`, `freopen()`, `setbuf()`, `setvbuf()`)、格式化输入输出(`fprintf()`, `fscanf()`, `printf()`, `scanf()`, `...
c语言中常用的函数和头文件.pdf
11-03
I/O函数:`remove()`, `rename()`, `tmpfile()`, `tmpnam()`, `fclose()`, `fflush()`, `fopen()`, `freopen()`, `setbuf()`, `setvbuf()`, `fprintf()`, `fscanf()`, `printf()`, `scanf()`, `sprintf()`, `sscanf...
C语言scanffscanf和sscanf区别
恒等于C的博客欢迎您
10-11 6181
在使用c语言的过程中,我们经常会用到scanfprintf,那么对于对于下面几个类似函数,有什么区别呢? 对比一组函数区别:一.scanffscanf和sscanf1.scanf2.fscanf3.sscanf二.printf,fprintfsprintf1.printf2.fprintf3.sprintf 一.scanffscanf和sscanf 1.scanf 首先scanf我们的很熟悉,他就是从键盘上输入数据,准确的来说就是: 从标准输入(键盘)读取格式化的数据。 int main.
C语言scanf/fscanf/sscanf以及printf/fprintf/sprintf区别
fufufu_的博客
10-12 984
sscanf sprintf
“深入了解C语言中的输入函数scanffscanf和sscanf
qq_67411584的博客
04-15 2365
我们深入了解了 scanf 函数在 C 编程语言中的作用和用法。我们知道,scanf 函数通过格式字符串来指定要读取的数据类型和格式,它可以读取整数、浮点数、字符串等多种数据类型。同时,我们也学习了如何使用 fscanf 和 sscanf 函数来从文件流和字符串中读取格式化输入。将有助于我们在编程过程中更有效地处理用户输入和文件读取操作。
sscanf的用法
热门推荐
yanyanwenmeng的博客
09-18 7万+
sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。 sscanfscanf区别scanf是以键盘作为输入源,sscanf是以字符串作为输入源。 sscanf: 原型: int sscanf(const char *str, const char *format,......); 说明: sscanf()会将参数str的...
【C学习】文件操作篇:常用文件操作函数详解!!scanf/printffscanf/fprintf 、sscanf/sprintf区别?文本文件和二进制文件、被误用的feof、文件缓冲区
m0_67470729的博客
04-04 1602
详细讲解C语言文件操作,手册级文章!
sprintf snprintfscanf sscanf函数使用详解
奋斗的小伙伴呀
10-20 2571
一、sprintf snprintf函数使用 1、sprintf 一、sprintf snprintf函数使用 1、 sscanf() sscanf()的作用: 从一个字符串中读进与指定格式相符的数据. **定义函数 int sscanf (const char *str,const char * format,…);**函数说明: sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。 sscanf的具体用法:
C语言格式化输入函数scanf和sscanf的用法
manhuami2007的博客
05-13 1549
scanf和sscanfC语言中常用的格式化输入函数。常用于从标准输入或者字符串中,按照一定的格式,将输入赋值给变量。除了常用的获取整型、字符串等数据外,还有三种用法比较实用。
写文章

热门文章

  • C语言sscanf、fscanf、scanf和sprintf、fprintf、printf函数的区别与相似分析 1523
  • C语言栈及栈的实现相关讲解 984
  • 中北大学2023c语言练习题练习三 487
  • 中北大学2023c语言练习四 222
  • 判断一个数是奇数还是偶数 118

最新评论

  • C语言sscanf、fscanf、scanf和sprintf、fprintf、printf函数的区别与相似分析

    CSDN-Ada助手: 不知道 C 技能树是否可以帮到你:https://edu.csdn.net/skill/c?utm_source=AI_act_c

最新文章

  • C语言栈及栈的实现相关讲解
  • 交换两个变量数据的四个方法(不引入第三个变量对数据进行交换)
  • 中北大学2023c语言练习四
2024年2篇
2023年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家银川玻璃钢雕塑卡通福建装饰商场美陈费用玻璃钢雕塑公园广州玻璃钢雕塑材料的好坏玻璃钢雕塑在哪有泉州玻璃钢雕塑玻璃钢卡通钢铁侠雕塑玻璃钢浮雕镂空雕塑海南泡沫玻璃钢雕塑汕头党建文化玻璃钢人物雕塑个旧市玻璃钢雕塑设计厂家成品玻璃钢雕塑摆件市场广西动物玻璃钢雕塑厂家玻璃钢仿铜雕塑商家临沂园林玻璃钢雕塑制作淮安玻璃钢仿铜雕塑定做光山玻璃钢雕塑定制知名玻璃钢雕塑价格宿迁玻璃钢人物雕塑定做价格安徽玻璃钢雕塑多少钱铜仁人物玻璃钢雕塑图片天津精神堡垒玻璃钢雕塑商场超市美陈上海特色商场美陈哪家好呈贡玻璃钢雕塑设计与制作室内校园玻璃钢景观雕塑公司张家口镜面玻璃钢卡通雕塑梧州玻璃钢雕塑用途苏州玻璃钢人物雕塑厂家供应南京家用玻璃钢雕塑摆件香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化