strstr函数头文件_C语言(函数)学习之strstr strcasestr
一、strstr函數(shù)使用
[1]?函數(shù)原型
char *strstr(const char *haystack, const char *needle);
[2]?頭文件
#include
[3]?函數(shù)功能
搜索"子串"在"指定字符串"中第一次出現(xiàn)的位置
[4]?參數(shù)說明
haystack -->被查找的目標(biāo)字符串"父串"
needle -->要查找的字符串對(duì)象"子串"
注:若needle為NULL,?則返回"父串"
[5]?返回值
(1) 成功找到,返回在"父串"中第一次出現(xiàn)的位置的 char *指針
(2) 若未找到,也即不存在這樣的子串,返回: "NULL"
[6]?程序舉例
#include
#include
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函數(shù)中參數(shù)嚴(yán)格"區(qū)分大小寫"
二、strcasestr函數(shù)
[1]?描述
strcasestr函數(shù)的功能、使用方法與strstr基本一致。
[2]?區(qū)別
strcasestr函數(shù)在"子串"與"父串"進(jìn)行比較的時(shí)候,"不區(qū)分大小寫"
[3]?函數(shù)原型
#define _GNU_SOURCE
#include
char *strcasestr(const char *haystack, const char *needle);
[4]?程序舉例
#define _GNU_SOURCE // 宏定義必須有,否則編譯會(huì)有Warning警告信息
#include
#include
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]?重要細(xì)節(jié)
如果在編程時(shí)沒有定義"_GNU_SOURCE"宏,則編譯的時(shí)候會(huì)有警告信息
warning: initialization makes pointer from integer without a cast
原因:
strcasestr函數(shù)并非是標(biāo)準(zhǔn)C庫函數(shù),是擴(kuò)展函數(shù)。函數(shù)在調(diào)用之前未經(jīng)聲明的默認(rèn)返回int型
解決:
要在#include所有頭文件之前加 #define _GNU_SOURCE
另一種解決方法:(但是不推薦)
在定義頭文件下方,自己手動(dòng)添加strcasestr函數(shù)的原型聲明
#include
... ...
extern char *strcasestr(const char *, const char *);
... ... // 這種方法也能消除編譯時(shí)的警告信息
總結(jié)
以上是生活随笔為你收集整理的strstr函数头文件_C语言(函数)学习之strstr strcasestr的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言个人通讯录管理系统实验报告_C语言
- 下一篇: 存clob为空的值_将网页文本(HTML