码迷,mamicode.com
首页 > 其他好文 > 详细

sscanf神器使用

时间:2017-10-17 10:05:00      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:内容   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);

  

sscanf神器使用

标签:内容   div   std   time   字符   eof   最大   can   方便   

原文地址:http://www.cnblogs.com/hatsusakana/p/7679903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!