C语言 strstr()函数

  • Post category:C

strstr() 函数用于在一个字符串中查找另一个字符串出现的位置。

该函数的声明如下:

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

函数的参数含义如下:

  • haystack:主串(被查找的字符串)
  • needle:子串(要查找的字符串)

函数的返回值:

  • 如果找到 needle 则返回 needle 第一次出现的地址
  • 如果未找到则返回 NULL

下面是两个使用实例:

示例一

假设现在要查找字符串 “hello world” 中是否包含字符串 “world”,代码如下:

#include <stdio.h>
#include <string.h>

int main() {
    char *str = "hello world";
    char *substr = "world";

    char *result = strstr(str, substr);
    if (result == NULL) {
        printf("No match found.\n");
    } else {
        printf("Match found at position: %ld\n", result - str + 1);
    }

    return 0;
}

输出结果:

Match found at position: 7

说明 “world” 的位置是从第 7 个字符开始。

示例二

假设现在要从一个字符串数组中查找子串 “Hello” 所在的位置,代码如下:

#include <stdio.h>
#include <string.h>

int main() {
    char *arr[] = {"Hello, world!", "Goodbye, world!", "Hello, again!"};
    char *substr = "Hello";
    int index = -1;
    int i;

    for (i = 0; i < 3; i++) {
        char *result = strstr(arr[i], substr);
        if (result != NULL) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("No match found.\n");
    } else {
        printf("Match found in string %d.\n", index + 1);
    }

    return 0;
}

输出结果:

Match found in string 1.

说明子串 “Hello” 在数组的第一个字符串中被找到了。