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神器使用的主要内容,如果未能解决你的问题,请参考以下文章

代码神器,美化你的课程报告

sscanf 与 sscanf_s的区别

升级到v141时sscanf是否停止工作?

C语言sscanf()函数详解的代码

炸了!又一 VSCode 神器面世(AI 能自动编程了??)

AI大神李沐开源新手剪辑神器!只看字幕就能剪视频,卡壳重复片段一键删除...