标签:内容 div std time 字符 eof 最大 can 方便
scanf都知道是格式化输入,偶然发现还有一个函数交sscanf,可以格式化解析字符串。使用sscanf可以很方便的提取、分割字符串,而且这是stdio中的方法,属于标准输入输出库,在网上找到了一些实例的代码:
char buf[512];
//取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
ZeroMemory(buf,sizeof(buf));
sscanf("abcdefg", "%4s", buf);
printf("%s\n",buf);
//取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
ZeroMemory(buf,sizeof(buf));
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
//取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
ZeroMemory(buf,sizeof(buf));
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
//取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
ZeroMemory(buf,sizeof(buf));
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
//给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非‘@‘的一串内容送到buf中
ZeroMemory(buf,sizeof(buf));
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
//给定一个字符串"hello, world",仅保留world。(注意:“,”之后有一空格)
ZeroMemory(buf,sizeof(buf));
sscanf("hello, world", "%*s%s", buf);
printf("%s\n", buf);
//格式化分割int
int a=0, b=0, c=0;
sscanf("2006:03:18","%d:%d:%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
//格式化分割字符串1
ZeroMemory(buf,sizeof(buf));
char sztime1[16],sztime2[16];
ZeroMemory(sztime1,sizeof(sztime1));
ZeroMemory(sztime2,sizeof(sztime2));
sscanf("aaaa - bbbb", "%s - %s", sztime1, sztime2);
printf("%s %s\n",sztime1,sztime2);
//格式化分割字符串2
ZeroMemory(buf,sizeof(buf));
ZeroMemory(sztime1,sizeof(sztime1));
ZeroMemory(sztime2,sizeof(sztime2));
sscanf("aaaa-bbbb", "%[a-z] - %[a-z]", sztime1, sztime2);
printf("%s %s\n",sztime1,sztime2);
标签:内容 div std time 字符 eof 最大 can 方便
原文地址:http://www.cnblogs.com/hatsusakana/p/7679903.html