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

来源:互联网 发布:javascript之父 编辑:程序博客网 时间:2024/05/19 01:59
C语言(函数)学习之[strstr]&[strcasestr]一、strstr函数使用[1]函数原型 char*strstr(constchar *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> intmain(intargc,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(constchar *haystack,const char*needle);[4]程序举例 #define _GNU_SOURCE// 宏定义必须有,否则编译会有Warning警告信息 #include <stdio.h> #include <string.h>int main(intargc,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 makespointer frominteger withouta cast原因:strcasestr函数并非是标准C库函数,是扩展函数。函数在调用之前未经声明的默认返回int型解决:要在#include所有头文件之前加 #define_GNU_SOURCE 另一种解决方法:(但是不推荐)在定义头文件下方,自己手动添加strcasestr函数的原型声明#include <stdio.h> ...... externchar *strcasestr(constchar *,const char*); ...... // 这种方法也能消除编译时的警告信息
0 0
原创粉丝点击