sscanf神器使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sscanf神器使用相关的知识,希望对你有一定的参考价值。
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/[email protected],获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非‘@‘的一串内容送到buf中 ZeroMemory(buf,sizeof(buf)); sscanf("iios/[email protected]", "%*[^/]/%[^@]", 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神器使用的主要内容,如果未能解决你的问题,请参考以下文章