先来看看下面一段代码:
#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)###