先来看看下面一段代码:

#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###\n",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###\n",db,version);
}
 
运行结果如下:
 
###smartmedia+++2.2.2154(121227225952b)###

相关文章:

  • 2021-07-04
  • 2021-08-07
  • 2022-01-13
  • 2021-11-29
  • 2022-12-23
  • 2021-11-29
  • 2021-11-29
  • 2021-11-29
猜你喜欢
  • 2021-09-25
  • 2022-12-23
  • 2021-11-29
  • 2021-11-29
  • 2021-07-20
  • 2021-11-29
  • 2021-11-29
相关资源
相似解决方案