当前位置: 首页 > news >正文

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` 中的起始位置。

2. **查找 "test"**:
   - `strstr(str, substr2)` 返回指向 `str` 中 `"test"` 首次出现位置的指针。
   - `ptr2 - str` 计算 `"test"` 在 `str` 中的起始位置。

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

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

相关文章:

  • 【信息系统项目管理师】【八大绩效域】知识点整合图
  • 管家婆工贸ERP PR010.任务单批量打印
  • (自用)yolo算法学习
  • vue3:i18n的使用
  • 信息系统运行管理员教程3--信息系统设施运维
  • Android开发技能 - Perfetto系列
  • Arm Linux ceres库编译
  • C/C++蓝桥杯算法真题打卡(Day5)
  • 从边缘到核心:群联云防护如何重新定义安全加速边界?
  • 区块链驱动金融第三章——深入解析比特币的运行机制
  • Spring IOC深入解析:从原理到实践
  • OpenAI流式解析
  • 【C++】入门
  • JavaWeek3-泛型,树和集合List接口
  • Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复
  • AF3 identity_rot_mats函数解读
  • CMS网站模板设计与用户定制化实战评测
  • Excel第41套全国人口普查
  • 【免费】2000-2019年各省地方财政房产税数据
  • c++第二课(基础)
  • 五一首日出沪高峰,G1503高东收费站上午车速约30公里/小时
  • 美航母撞船后又遇战机坠海,专家:长时间作战部署疲于奔命是主因
  • 中央党校(国家行政学院)举行2025年春季学期第一批进修班毕业典礼
  • 上海国际咖啡文化节开幕,北外滩集结了超350个展位
  • 李铁案二审今日宣判,押送警车已进入法院
  • 中国防疫队深入缅甸安置点开展灾后卫生防疫工作