C语言(函数)学习之strstr strcasestr

本文介绍了C语言中用于查找字符串的strstr和strcasestr函数。strstr函数在区分大小写的情况下查找子串在父串中的首次出现位置,如果未找到返回NULL。strcasestr则不区分大小写,其行为与strstr类似,但在某些系统中需要预定义_GNU_SOURCE宏才能使用。文中通过示例代码展示了这两个函数的用法。
部署运行你感兴趣的模型镜像
C语言(函数)学习之[strstr]&[strcasestr]一、strstr函数使用[1] 函数原型 char *strstr(const char *haystack, const char *needle);[2] 头文件 #include <string.h>[3] 函数功能 搜索"子串""指定字符串"中第一次出现的位置{4} 参数说明 haystack -->被查找的目标字符串"父串" needle -->要查找的字符串对象"子串" 注:若needle为NULL, 则返回"父串"[5] 返回值 (1) 成功找到,返回在"父串"中第一次出现的位置的 char *指针 (2) 若未找到,也即不存在这样的子串,返回: "NULL"[6] 程序举例 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *res = strstr("xxxhost: www.baidu.com", "host"); if(res == NULL) printf("res1 is NULL!\n"); else printf("%s\n", res); print:-->'host: www.baidu.com' res = strstr("xxxhost: www.baidu.com", "cookie"); if(res == NULL) printf("res2 is NULL!\n"); else printf("%s\n", res); print:-->'res2 is NULL!' return 0; }[7] 特别说明 注:strstr函数中参数严格"区分大小写" 二、strcasestr函数[1] 描述 strcasestr函数的功能、使用方法与strstr基本一致[2] 区别 strcasestr函数在"子串""父串"进行比较的时候,"不区分大小写"[3] 函数原型 #define _GNU_SOURCE #include <string.h> char *strcasestr(const char *haystack, const char *needle);[4] 程序举例 #define _GNU_SOURCE // 宏定义必须有,否则编译会有Warning警告信息 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *res = strstr("xxxhost: www.baidu.com", "Host"); if(res == NULL) printf("res1 is NULL!\n"); else printf("%s\n", res); print:-->'host: www.baidu.com' return 0; }[5] 重要细节 如果在编程时没有定义"_GNU_SOURCE"宏,则编译的时候会有警告信息 warning: initialization makes pointer from integer without a cast 原因:strcasestr函数并非是标准C库函数,是扩展函数。函数在调用之前未经声明的默认返回int型 解决:要在#include所有头文件之前加 #define _GNU_SOURCE 另一种解决方法:(但是不推荐) 在定义头文件下方,自己手动添加strcasestr函数的原型声明 #include <stdio.h> ... ... extern char *strcasestr(const char *, const char *); ... ... // 这种方法也能消除编译时的警告信息

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值