strstr!!!

`strstr` 是 C 语言中的一个标准库函数,用于在一个字符串中查找子串。它的原型定义在 `string.h` 头文件中。`strstr` 函数

返回指向子串首次出现位置的指针,如果未找到子串,则返回 `NULL`。

函数原型

```c

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

```

**参数**:

  • `haystack`:要搜索的源字符串。

  • `needle`:要在 `haystack` 中搜索的子串。

**返回值**:

  • 返回一个指向 `haystack` 中 `needle` 第一次出现位置的指针。

  • 如果 `needle` 是空字符串,`strstr` 返回 `haystack` 的指针。

  • 如果 `needle` 未在 `haystack` 中找到,返回 `NULL`。

示例

下面是一个使用 `strstr` 的示例程序,演示了如何在一个字符串中查找子串:

复制代码
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, World! This is a test string.";
    char substr1[] = "World";
    char substr2[] = "test";
    char substr3[] = "example";

    // 查找子串 "World"
    char *ptr1 = strstr(str, substr1);
    if (ptr1 != NULL) {
        printf("Found '%s' in string at position %ld\n", substr1, ptr1 - str);
    } else {
        printf("'%s' not found in string\n", substr1);
    }

    // 查找子串 "test"
    char *ptr2 = strstr(str, substr2);
    if (ptr2 != NULL) {
        printf("Found '%s' in string at position %ld\n", substr2, ptr2 - str);
    } else {
        printf("'%s' not found in string\n", substr2);
    }

    // 查找子串 "example"
    char *ptr3 = strstr(str, substr3);
    if (ptr3 != NULL) {
        printf("Found '%s' in string at position %ld\n", substr3, ptr3 - str);
    } else {
        printf("'%s' not found in string\n", substr3);
    }

    return 0;
}

输出

复制代码
Found 'World' in string at position 7
Found 'test' in string at position 19
'example' not found in string

解释

  1. **查找 "World"**:
  • `strstr(str, substr1)` 返回指向 `str` 中 `"World"` 首次出现位置的指针。

  • `ptr1 - str` 计算 `"World"` 在 `str` 中的起始位置。

  1. **查找 "test"**:
  • `strstr(str, substr2)` 返回指向 `str` 中 `"test"` 首次出现位置的指针。

  • `ptr2 - str` 计算 `"test"` 在 `str` 中的起始位置。

  1. **查找 "example"**:
  • `strstr(str, substr3)` 未找到 `"example"`,返回 `NULL`。

这个示例展示了如何使用 `strstr` 函数在一个字符串中查找子串,并输出子串的位置或未找到的信息。

相关推荐
栀秋66610 分钟前
深入浅出链表操作:从Dummy节点到快慢指针的实战精要
前端·javascript·算法
Pyeako23 分钟前
机器学习之KNN算法
人工智能·算法·机器学习
xhxxx28 分钟前
从被追问到被点赞:我靠“哨兵+快慢指针”展示了面试官真正想看的代码思维
javascript·算法·面试
可信计算31 分钟前
【算法随想】一种基于“视觉表征图”拓扑变化的NLP序列预测新范式
人工智能·笔记·python·算法·自然语言处理
月明长歌38 分钟前
【码道初阶】【LeetCode 110】平衡二叉树:如何用一个“Magic Number”将复杂度从O(N²)降为 O(N)?
linux·算法·leetcode
yaoh.wang41 分钟前
力扣(LeetCode) 14: 最长公共前缀 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
历程里程碑1 小时前
C++ 9 stack_queue:数据结构的核心奥秘
java·开发语言·数据结构·c++·windows·笔记·算法
t198751281 小时前
基于MATLAB的线性判别分析(LDA)降维算法实现方案
开发语言·算法·matlab
仰泳的熊猫1 小时前
1108 Finding Average
数据结构·c++·算法·pat考试
老赵聊算法、大模型备案1 小时前
2025 年 12 月北京市生成式人工智能服务备案分析:政务场景再扩容,合规生态更聚焦
人工智能·算法·microsoft·aigc·政务