c++中sscanf函数与sprintf函数的用法

 我来答
世纪网络17
2022-07-28 · TA获得超过5960个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:144万
展开全部

一.sscanf 读取格式化的字符串中的数据
sscanf和scanf类似,都是用于输入的,只是后者以屏幕为输入源,而前者以固定字符串为输入。
sscanf() 是从一个字符串中读进与指定格式相符的数据
二.sprintf与printf的用法很类似,只不过是前者输出到指定的目标,后者输出到屏幕。
sprintf()指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。
int scanf(const char format [,agument])
其中format可以是一个或多个
{%[
][width][{h | l | l64 | L}]}type
{a|b|c}表示a、b、c中选一,[d]表示d是可有可无的。
所以,format形式可以有:
%s
%5s
%[a-z]5d
注意:
%*[width][{h | l | l64 | L}]}type表示过滤满足条件的字符串,不向目标中输出。

1、基本用法,取字符串
string source0 = "1234456";
char str[521];
sscanf(source0.c_str(),"%s",str);
sscanf(source0.c_str(),"%4s",str);

2、转换为整型数
string source0 = "123456";
int x;
sscanf(source0.c_str(),"%d",&x);
sscanf(source0.c_str(),"%3d",&x);

3、停止和范围
sscanf(source0,"%[^a]",str); //遇到“a”停止
sscanf(source0,"%[^c]",str); //遇到“c”停止
sscanf(source0,"%[1-9A-Z]",str); //只取范围1-9和A-Z的字符
sscanf(source0,"%[^b-z]",str); //遇到“b-z”停止
sscanf(source0,"%[^c-z]",str); //遇到“c-z”停止

4、格式转换
char source[512] = "2015:8:1";
int a,b,c;
sscanf(source,"%d:%d:%d",&a,&b,&c);
注意:这个地方a、b、c必须加引用,否则会报错。

5、复杂情况
char source[512] = "fjkdsjf/123456@fjkdsjf";
char str[512];
sscanf(source,"%*[ /]/%[ @]",str);
结果为:123456

sprintf
sprintf与printf的用法很类似,只不过是前者输出到指定的目标,后者输出到屏幕。
int sprintf(char *buffer,const char *format,...)
举个例子:

结果:
1
buf = 1
buf = 00000001
2
buf = 2
buf = 00000002

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式