关于strcasestr的问题

本文介绍了在Shell脚本中如何正确使用strcasestr函数进行大小写不敏感的字符串搜索。作者在尝试从shell输出中查找特定字符串时遇到了类型转换问题,并通过定义宏__USE_GNU解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天要从一个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 <string.h>之前来define这个macro,最好使用完马上将这个自己define的macro undefine避免给别人带来麻烦!
        出错的信息如下:

“warning: return makes pointer from integer without a cast”
解决方法:
#define __USE_GNU
#include <string.h>
使用strcasestr
#undefine __USE_GNU

转载于:https://www.cnblogs.com/hjslovewcl/archive/2010/11/23/2314362.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值