zoukankan      html  css  js  c++  java
  • 利用sscanf()匹配字符串需要注意贪婪匹配

    先来看看下面一段代码:

    #include <stdio.h>

    int main()
    {
      char de_info[64]="DE_smartmedia:2.2.2154(121227225952b)";
      char db[64]={0};
      char version[64]={0};
      sscanf(de_info,"DE_%s:%s",db,version);
      printf("###%s+++%s### ",db,version);
    }
     
    运行的结果如下:
     
    ###smartmedia:2.2.2154(121227225952b)+++###
     
    我们可以看到:后面的字符串并没有匹配到,在这里我们犯了贪婪匹配的错误,第一个%s也包括了:。
     
    修改后的程序如下:
    #include <stdio.h>
    int main()
    {
      char de_info[64]="DE_smartmedia:2.2.2154(121227225952b)";
      char db[64]={0};
      char version[64]={0};
      sscanf(de_info,"DE_%[^:]:%s",db,version);
      printf("###%s+++%s### ",db,version);
    }
     
    运行结果如下:
     
    ###smartmedia+++2.2.2154(121227225952b)###
  • 相关阅读:
    第 2 章 MySQL 架构组成
    MySql学习笔记
    大型项目成功的关键
    内连接区别外连接
    UML2.0
    软件架构师之路
    UVA
    ZOJ
    UVA
    UVA
  • 原文地址:https://www.cnblogs.com/huazhen/p/3412485.html
Copyright © 2011-2022 走看看