c 按特定格式读取字符串的数据 sscanf的用法【转载】
Sscanf 函数
原型
int sscanf( const char *buffer, const char *format, [ argument ] ... ); 123
存储的数据
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