c语言中strstr函数的用法是什么?

1. strstr函数概述

strstr函数是c语言中的一个非常实用的字符串操作函数,在字符串中查找某个子串第一次出现的位置,返回指向该子串的指针。该函数位于string.h头文件中,字符串操作基础库。

#include <string.h>

char *strstr(const char *haystack, const char *needle);

其中,haystack表示要查找的字符串,needle表示要查找的子串。

2. strstr函数的用法

2.1 查找子串

可以通过调用strstr函数来查找haystack中第一次出现needle的位置,例如查找"sit"在字符串"this is a sit"中第一次出现的位置:

#include <stdio.h>

#include <string.h>

int main(){

char str1[]="this is a sit";

char str2[]="sit";

char *p;

p=strstr(str1,str2);

if(p)

printf("the substring is:%s\n",p);

else

printf("the substring is not found\n");

return 0;

}

上面的代码中,首先定义了一个字符串str1和一个子串str2,然后通过调用strstr函数查找子串str2在str1中的位置,最后输出结果。

如果找到了子串,那么返回值就是指向子串第一次出现位置的指针(即p指向子串"sit"的开头),如果找不到则返回NULL。

2.2 精准匹配

由于strstr函数是在字符中查找字串,在haystack中序列搜索等于needle的第一出现,因此可以通过该函数实现精确匹配,例如:

char *strstr (const char *haystack, const char *needle)

lengthOfString = strlen(needle); // 待搜索字符串长度

for (i = 0; i <= strlen(haystack) - lengthOfString; ++i) {

if (haystack[i] == needle[0]) { // 匹配首字母

if (strncmp(&haystack[i], needle, lengthOfString) == 0) // 判断后面的字符是否相等

return (char *)&haystack[i];

}

}

return NULL;

}

通过比对判断两个字符串是否相等,获得准确的匹配结果。

2.3 查找多个子串

我们也可以使用strstr函数查找字符串中的多个子串,例如在字符串"this is a sit"中查找"i"和"s"所在的位置:

#include <stdio.h>

#include <string.h>

int main(){

char str1[]="this is a sit";

char *p;

p=strstr(str1,"i");

while(p){

printf("i found at:%d\n",p-str1+1);//输出i所在的位置,即指针地址减去原始字符串的地址再加一

p=strstr(p+1,"i");//p+1指向i下一个字符的位置,继续查找

}

p=strstr(str1,"s");

while(p){

printf("s found at:%d\n",p-str1+1);

p=strstr(p+1,"s");

}

return 0;

}

上面的代码中,定义了一个字符串str1,然后分别查找子串"i"和"s"所在的位置,如果查找到了就输出其位置,并继续在剩下的字符串中查找,直到所有的位置都被找到。

需要注意的是,如果要在同一个字符串中查找多个子串,可以在查找完一个子串后将p指针向后移一个字符的位置,以继续查找下一个子串。

3. 总结

strstr函数是c语言中非常常用的字符串操作函数之一,可以快速地查找一个字符串中是否包含某个子串,还可以实现字符串的精准匹配和查找多个子串的功能,具有非常广泛的应用场景。掌握使用strstr函数的技巧可以使程序更加高效、优雅,提升我们的编程水平。

后端开发标签