1.定义函数
int sscanf (const char *str,const char * format,........);
函数说明
sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。
返回值
成功则返回参数数目,失败则返回-1,错误原因存于errno中。
范例
#include<stdio.h>
main()
{
int i;
unsigned int j;
char input[]="10 0x1b aaaaa bbbbbbbb 123";
char s[5];
int ff;
sscanf(input,"%d %x %4[a-z] %*s %d", &i,&j,s,&ff);
printf("%d %d %s %d\n", i,j,s,ff);}
执行
10 27 aaaa
2.支持集合操作:
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配),遇到非[a-z]范围内字符即停止读入。
%[aB'] 匹配a、B、'中一员,贪婪性,同上。
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性
3.示例1.1
取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
结果为:1234
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
结果为:123456
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
结果为:12DDWDFF
原文:
http://baike.baidu.com/view/1364018.htm