您的位置:首页 > 其它

利用sscanf()匹配字符串需要注意贪婪匹配

2013-11-07 14:50 162 查看
先来看看下面一段代码:

#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)###
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐