c 按特定格式读取字符串的数据 sscanf的用法【转载】

Sscanf 函数

原型


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

123

buffer

 

存储的数据

format 窗体控件字符串。 有关详细信息,请参阅"格式规范"。

argument 可选自变量

locale 要使用的区域设置

说明

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。

控制字符说明

%c 一个单一的字符

%d 一个十进制整数

%i 一个整数

%e, %f, %g 一个浮点数

%o 一个八进制数

%s 一个字符串

%x 一个十六进制数

%p 一个指针

%n 一个等于读取字符数量的整数

%u 一个无符号整数

%[] 一个字符集

%% 一个精度符

函数返回值

函数将返回成功赋值的字段个数;返回值不包括已读取但未赋值的字段个数。 返回值为 0 表示没有将任何字段赋值。 如果在第一次读取之前到达字符串结尾,则返回EOF。

例程

代码


char buf[512];
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);
//结果为:123456


//取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
//结果为:1234

//取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
//结果为:123456

//取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
//结果为:123456abcdedf

//取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
//结果为:123456abcdedf

//给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
//结果为:12DDWDFF

//给定一个字符串"hello, world",仅保留"world"。(注意:“,”之后有一空格)
sscanf("hello, world", "%*s%s", buf);
printf("%s\n", buf);
//结果为:world

12345678910111213141516171819202122232425262728293031323334353637

图片

转载:https://blog.csdn.net/weixin_42078116/article/details/89891520

全部评论
从csdn搬运来的?
点赞 回复 分享
发布于 2023-02-20 18:24 湖北
挺有意思的
点赞 回复 分享
发布于 2023-02-20 18:36 广东

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务