标签:一个 去空格 dff 字符串 不清楚 语法 符号 abc strong
int ssanf(const char *buffer, const char *format,[argument]...);
buffer
存储的数据format
控件字符串argument
可选自变量第二个参数可以是一个或者多个 {%[*] [width] [{h | I | I64 | L}]type | ‘ ‘ | ‘\t‘ | ‘\n‘ | 非%符号}
这个参数说明暂时不清楚,先不用管它,稍后通过例子来说明
函数将返回成功赋值的字段个数;返回值不包括已读取但未值的字段个数。返回值为0表示在第一次读取之前到达字符串结尾,则返回EOF
sscanf("1 2 3","%d %d %d",buf1, buf2, buf3);
//成功调用返回值为3,即buf1,buf2,buf3均成功转换。
sscanf("1 2","%d %d %d",buf1, buf2, buf3);
//成功调用返回值为2,即只有buf1,buf2成功转换。
sscanf("hello, world", "%*s%s", buf);
//成功调用返回值为1,buf成功转换
一般用法——将一字符串赋值给另一个字符串
sscanf("123456","%s",buf);
取指定长度的字符串
sscanf("1233456","%4s",buf);
取到指定字符为止的字符串
sscanf("123456 abcdef","%[^ ]",buf)
其中[^ ]
中 ^
表示全集中除去空格的集合。是自定义的一种规则。
取到指定字符集为止的字符串
sscanf("123456abcdedfBCDEF",?"%[^A-Z]",?buf);
其中[^A-Z]
表示全集中除去[A-Z]
的集合,也就是说遇到不是该集合中的字符就停止读取。
取仅包含指定字符集的字符串
sscanf("123456abcdeBCDEF","[1-9a-z]",buf);
其中[1-9a-z]表示集合,用[1-9,a-z]
表示也可以
给定一个字符串iios/12DDWDFF@122 ,获取/ 和 @ 之间的字符串,可以按照前面第3条规则,来读取。
sscanf("iios/12DDWDFF@122 ","%*[^/]/%[^@]",buf);
其中%*[^/]/%[^@]
表示先读取到遇到 /
为止的字符串(/
并没有读入),然后因为有*
所以不写入,中间加的一个/
是为了读取缓冲区中的/
,紧接着%[^@]
读取遇到@
的字符串,写入到buf
里面。
分割字符串
sscanf("hello, world","%*s%s",buf);
最终写入buf
的是world
。因为这利用了%s
读取遇到空格停止的特性。
标签:一个 去空格 dff 字符串 不清楚 语法 符号 abc strong
原文地址:https://www.cnblogs.com/1625--H/p/10262343.html