为什么这里说sscanf返回值被忽视?

img


sscanf的高级用法-跳过数据
不是很明白
按照教的的写,但是我这边运行不出来,报错是为什么?
哪个地方出问题了?

main函数写错了,编译根本没通过,是main不是mian

主函数名写错了main,其它没问题
格式化串的的%星号表示,不给对应的对象名,表示要丢弃此值

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/386144
  • 这篇博客也不错, 你可以看下sscanf的使用
  • 你还可以看下c语言参考手册中的 c语言-sscanf()
  • 除此之外, 这篇博客: 关于sprintf与sscanf基本用法中的 正则表达式: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 正则表达式可以让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;
    }
    

    运行结果