Chinaunix首页 | 论坛 | 博客
  • 博客访问: 828327
  • 博文数量: 168
  • 博客积分: 5431
  • 博客等级: 大校
  • 技术积分: 1560
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-22 11:56
文章存档

2015年(2)

2014年(1)

2013年(12)

2012年(12)

2011年(15)

2010年(5)

2009年(16)

2008年(41)

2007年(64)

分类: LINUX

2007-11-29 20:00:54

关于strcasestr的问题

    今天要从一个shell的执行结果中查找一个字符串的存在与否,先使用popen执行一个shell获得输出stream的指针,然后使用fgets一行一行分析。在分析一行,的时候使用strcasestr来查找一个不分大小的字符串是否存在,但是man page里明明说的是返回char×,编译的时候报错。说我没有进行显式的类型转换就将int转换成pointer(我用一个char×pointer接收结果)类型。在实在找不到自己的错误的情况下,我到网络开始转悠,发现很多老外也遇到这个问题。原来是一些老的strcasestr是non-standard lib的一本分,因此使用的时候需要将GNU extension开关打开,方法如下:
    在需要这个macro的地方#define __USE_GNU,我这里的情况是需要在string.h中使用extension;所以,在#include 之前来define这个macro,最好使用完马上将这个自己define的macro undefine避免给别人带来麻烦!
        出错的信息如下: 
	“warning: return makes pointer from integer without a cast”
解决方法:
#define __USE_GNU
#include
使用strcasestr
#undefine __USE_GNU
阅读(1324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~