LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 774|回复: 1

一个sscanf的问题

[复制链接]
发表于 2007-11-20 11:31:04 | 显示全部楼层 |阅读模式
#include <stdio.h>
int main(void)
{
        int temp;
        sscanf("1234abcd","%dabcd",&temp);
        printf("test1: temp=%d\n",temp);
        sscanf("4567efg","%dabcd",&temp);
        printf("test2: temp=%d\n",temp);
        return 0;
}

其实是希望第二次sscanf获取整数应该失败,不知各位怎么看
发表于 2007-11-20 12:18:33 | 显示全部楼层
scanf 的模式并非正则表达式, 不要指望它能这样工作.


  1. int temp;
  2. char s[10];
  3. sscanf("4567efg", "%d%4s", &temp, s);
  4. if (memcmp(s, "abcd", 4) == 0) { /* ok */ } else { /* fail */ }
复制代码

这段代码能够完成楼主的第二个检测, 但是仍然不建议这样用, 因为在复杂的情况下可能会产生一些预期之外的效果. 用真正的正则表达式吧, man 3 regex
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表