strstr函数用法详解
上周有个客人问我,说他们用C语言编程的时候,经常听到“strstr”这个词,但不太明白它是干什么的。我一看这问题,就知道是涉及到字符串处理的知识了。来,咱们就聊聊这个“strstr”函数。
首先,得知道“strstr”是C语言标准库中的一个函数,全称是“string stristr(const char haystack, const char needle)”。这个函数是用来在“haystack”(被搜索的字符串)中查找“needle”(要查找的子字符串)的。
我自己踩过的坑是,有时候看到“strstr”这个词,容易和“strcpy”、“strlen”之类的函数搞混。但它们的功能完全不一样:
- strcpy 是用来复制字符串的。 - strlen 是用来计算字符串长度的。 - 而 strstr 是用来查找子字符串的。
具体用法是这样的:
c #include
int main() { char haystack[] = "Hello, world!"; char needle[] = "world"; char result = strstr(haystack, needle);
if (result != NULL) { printf("找到了 '%s' 在 '%s' 中的位置: %ld\n", needle, haystack, result - haystack); } else { printf("没找到 '%s' 在 '%s' 中\n", needle, haystack); }
return 0; }
这段代码会在 haystack 字符串中查找 needle 字符串,如果找到了,它会返回一个指向第一个匹配的字符的指针。如果没有找到,它会返回 NULL。
需要注意的是,strstr 函数在找到匹配时,返回的是指向子字符串开始位置的指针,而不是子字符串在原字符串中的索引。所以,如果你想得到索引,需要用 result - haystack 来计算。
另外,strstr 是不区分大小写的。如果你需要区分大小写,你可能需要自己实现一个类似的函数,或者使用 strcasestr 函数(在POSIX兼容的系统上可用)。
反正你看着办,这玩意儿用起来还是有点小技巧的。
首先,得知道“strstr”是C语言标准库中的一个函数,全称是“string stristr(const char haystack, const char needle)”。这个函数是用来在“haystack”(被搜索的字符串)中查找“needle”(要查找的子字符串)的。
我自己踩过的坑是,有时候看到“strstr”这个词,容易和“strcpy”、“strlen”之类的函数搞混。但它们的功能完全不一样:
- strcpy 是用来复制字符串的。 - strlen 是用来计算字符串长度的。 - 而 strstr 是用来查找子字符串的。
具体用法是这样的:
c #include
int main() { char haystack[] = "Hello, world!"; char needle[] = "world"; char result = strstr(haystack, needle);
if (result != NULL) { printf("找到了 '%s' 在 '%s' 中的位置: %ld\n", needle, haystack, result - haystack); } else { printf("没找到 '%s' 在 '%s' 中\n", needle, haystack); }
return 0; }
这段代码会在 haystack 字符串中查找 needle 字符串,如果找到了,它会返回一个指向第一个匹配的字符的指针。如果没有找到,它会返回 NULL。
需要注意的是,strstr 函数在找到匹配时,返回的是指向子字符串开始位置的指针,而不是子字符串在原字符串中的索引。所以,如果你想得到索引,需要用 result - haystack 来计算。
另外,strstr 是不区分大小写的。如果你需要区分大小写,你可能需要自己实现一个类似的函数,或者使用 strcasestr 函数(在POSIX兼容的系统上可用)。
反正你看着办,这玩意儿用起来还是有点小技巧的。