先来看看下面一段代码:
- #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)###
本文转载自:http://www.mysql100.com/c/c_error_list/2013/0130/332.html
转载于:https://blog.51cto.com/305460883/1129863