main函数写错了,编译根本没通过,是main不是mian
主函数名写错了main,其它没问题
格式化串的的%星号表示,不给对应的对象名,表示要丢弃此值
正则表达式可以让sscanf很好的处理字符串的拆分,例如当你通过上位机发送一条命令串“set,1,2”;可以使用%*[^,]来过滤掉set 从而再经过一些列操作进行截取该指令有效数据。
%[^,]意思就是读取到非“,”的位置
说明:
1.%还是变量参数的格式控制符
2. [ ]代表你用的是正则表达式
3. ^代表非的意思
4. ,就是你认为读到的位置
例如:set,1,2 使用该格式控制内容将读取到set;
/***********案例二:%[^,]使用演示*******/
#include "stdio.h"
int main(void)
{
char buff[]="set,1,2";
char strbuf[10]={0};
sscanf(buff,"%[^,]",strbuf);
printf("strbuf:%s\r\n",strbuf);
return 0;
}
运行结果:strbuf:set
%* [1-9]%* [a-z]%[A-Z]舍弃读到的1-9内容及a-z内容保留A-Z内容
说明:
1.%号后面的*代表舍弃读到的内容
2.a-z表示遍历所有a-z小写内容(仅限连续内容)
/***********案例三:%*[1-9]%*[a-z]%[A-Z]使用演示*******/
#include "stdio.h"
int main(void)
{
char buff[]="1111testSSCANF";
char strbuf[10]={0};
char buf1[10]={0};
char buf2[10]={0};
sscanf(buff,"%*[1-9]%*[a-z]%[A-Z]",strbuf);
printf("strbuf:%s\r\n",strbuf);
return 0;
}
运行结果:strbuf:SSCANF
%[a-z] 表示匹配a到z中任意字符 注意此内容需要组合其他格式控制符使用否则返回空串。
/***********案例三:%[a-z]使用演示*******/
#include "stdio.h"
int main(void)
{
char buff[]="1111testSSCANF";
char strbuf[10]={0};
char buf1[10]={0};
char buf2[10]={0};
sscanf(buff,"%[a-z]",strbuf);
printf("%s\r\n",strbuf);
return 0;
}
运行结果