资源描述:
《sscanf的用法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、名称:sscanf()- 从一个字符串中读进与指定格式相符的数据. 函数原型:Int sscanf(stringstr,stringfmt,mixedvar1,mixedvar2...);int scanf(constchar*format[,argument]...); 说明:sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。其中的format可以是一个或多个 {%[*][width][{h
2、l
3、I64
4、L}]type
5、‘‘
6、‘t‘
7、‘‘
8、 非%符号} 注:1、 * 亦可用于格式中,(即 %*d 和 %*s) 加了
9、星号 (*) 表示跳过此数据不读入.(也就是不把此数据读入参数中) 2、{a
10、b
11、c}表示a,b,c中选一,[d],表示可以有d也可以没有d。 3、width表示读取宽度。 4、{h
12、l
13、I64
14、L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。5、type:这就很多了,就是%s,%d之类。 6、特别的:%*[width][{h
15、l
16、I64
17、L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值 支持集合操作: %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
18、 %[aB‘] 匹配a、B、‘中一员,贪婪性 %[^a] 匹配非a的任意字符,贪婪性 例子: 1. 常见用法。 char buf[512]={0}; sscanf("123456", "%s", buf);printf("%s", buf); 结果为:123456 2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。 sscanf("123456", "%4s", buf);printf("%s", buf); 结果为:1234 3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。 sscanf("123
19、456abcdedf", "%[^]", buf);printf("%s", buf); 结果为:123456 4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。 sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);printf("%s", buf); 结果为:123456abcdedf 5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。 sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);printf("%s", buf
20、); 结果为:123456abcdedf 6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非‘@‘的一串内容送到buf中sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);printf("%s", buf); 结果为:12DDWDFF 7、给定一个字符串““hello,world”,仅保留world。(注意:“,”之后有一空格)sscanf(“hello,world”, "%*s%s", buf); printf("%s", buf); 结果为:w
21、orld %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了 如果没有空格则结果为NULL。sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式.