字符串函数strstr()详解

一、strstr()函数的作用

字符串函数 strstr() 是 C 语言的一个标准库函数,它的作用是在一个字符串中查找给定字符串的第一个匹配之处,并返回指向该字符串的指针。如果没有找到该字符串,则返回 NULL。1

二、strstr()函数的原型和参数

strstr()函数的原型定义在头文件 <string.h> 中,如下所示:

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

strstr()函数的参数有两个:

  • haystack:要查找的字符串,必须是一个以空字符 ‘\0’ 结尾的字符数组,也就是 C 语言中的字符串类型。
  • needle:要查找的子字符串,也必须是一个以空字符 ‘\0’ 结尾的字符数组,也就是 C 语言中的字符串类型。

三、strstr()函数的返回值

strstr()函数的返回值是一个字符指针,它指向的是在字符串 haystack 中第一次出现字符串 needle 的位置。如果在字符串 haystack 中找到了字符串 needle,那么返回的指针就是 haystack + i,其中 i 是字符串 needle 在字符串 haystack 中的索引,从 0 开始计数。如果在字符串 haystack 中没有找到字符串 needle,那么返回的指针就是 NULL,也就是 0。

四、strstr()函数的使用示例

下面给出一个使用 strstr() 函数的简单示例,它在字符串 "This is a simple string" 中查找字符串 "simple",并输出其在字符串中第一次出现的位置和之后的字符串。

#include <stdio.h>
#include <string.h>int main()
{const char *haystack = "This is a simple string"; // 要查找的字符串const char *needle = "simple"; // 要查找的子字符串char *ptr; // 用于接收返回的指针ptr = strstr(haystack, needle); // 调用 strstr() 函数if (ptr != NULL) // 如果找到了字符串{printf("The string '%s' is found at position: %ld\n", needle, ptr - haystack + 1); // 输出字符串的位置printf("|%s| and the rest of the string is - |%s|\n", needle, ptr); // 输出字符串和之后的字符串}else // 如果没有找到字符串{printf("The string '%s' was not found in the string.\n", needle); // 输出提示信息}return 0;
}

运行结果如下:

The string 'simple' is found at position: 11
|simple| and the rest of the string is - |simple string|

五、strstr()函数的注意事项

在使用 strstr() 函数时,需要注意以下几点:

  • strstr() 函数可以查找字符串,但不能查找单个字符。如果要查找单个字符,可以使用 strchr() 函数。
  • strstr() 函数只能查找字符串的第一个匹配,不能查找所有的匹配。如果要查找所有的匹配,可以使用循环或递归的方法。
  • strstr() 函数对于大小写敏感,也就是说,它会区分字符串 "Hello" 和 "hello"。如果要忽略大小写,可以使用 strcasestr() 函数。
  • strstr() 函数对于多字节字符的支持不完善,也就是说,它只会查找多字节字符的第一个字节。如果要查找多字节字符,可以使用 wcsstr() 函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言求奇数分之一序列前N项和

本题要求编写程序&#xff0c;计算序列 1 1/3 1/5 ... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S&#xff0c;精确到小数点后6位。题目保证计算结果不超过双精度范围。 输入样例: 23输出样例: …

opencv中的rgb转gray的计算方法

转换原理 在opencv中&#xff0c;可以使用cv2.cvtColor函数将rgb图像转换为gray图像。示例代码如下&#xff0c; import cv2img_path "image.jpg" image cv2.imread(img_path) gray_image cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) mean gray_image.mean() pri…

【AI Agent系列】【MetaGPT多智能体学习】4. 基于MetaGPT的Team组件开发你的第一个智能体团队

本系列文章跟随《MetaGPT多智能体课程》&#xff08;https://github.com/datawhalechina/hugging-multi-agent&#xff09;&#xff0c;深入理解并实践多智能体系统的开发。 本文为该课程的第四章&#xff08;多智能体开发&#xff09;的第二篇笔记。主要是对MetaGPT中Team组件…

【Django】执行查询—检索对象

检索对象 检索全部对象 >>> all_entries Entry.objects.all()通过过滤器检索指定对象 通过添加过滤条件精炼原始 QuerySet。两种最常见的精炼 QuerySet 的方式是&#xff1a; filter(**kwargs) 返回一个新的 QuerySet&#xff0c;包含的对象满足给定查询参数。 ex…

【Tomcat】在 linux 上实现 Catlina.log 自动分割,防止文件过大

背景描述 catalina.out即标准输出和标准出错&#xff0c;所有输出到这两个位置的都会进入catalina.out&#xff0c;这里包含tomcat运行自己输出的日志以及应用里向console输出的日志。默认这个日志文件是不会进行自动切割的&#xff0c;所以我们需要借助其他工具进行切割&…

MySQL:快照读和当前读

mysql读取数据实际上有两种读取模式&#xff1a;当前读和快照读 快照读&#xff1a;快照读的执行方式是生成 ReadView&#xff0c;直接利用 MVCC 机制来进行读取&#xff0c;并不会对记录进行加锁。当前读&#xff1a;每次读取的都是当前最新的数据&#xff0c;但是读的时候不…

剑指offer面试题22 栈的压入弹出序列

考察点 辅助栈知识点 题目 分析 这道题目要求输入俩个序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;要求判断第二个序列是否是该栈的弹出顺序。遇到这类题目思维一定要往辅助栈上靠&#xff0c;因为关于栈的考点其实就是这个。这种题目的解题思路就是归纳&#x…

「Python系列」Python pyecharts模块

文章目录 一、pyecharts安装二、pyecharts应用三、pyecharts图表类型四、pyecharts特点与功能特点&#xff1a;功能&#xff1a; 五、相关链接 一、pyecharts安装 要安装 Python 的 pyecharts 模块&#xff0c;你可以使用 pip&#xff0c;这是 Python 的包管理工具。请按照以下…

Payment Without Change

题目链接&#xff1a;Problem - 1256A - Codeforces 解题思路&#xff1a; 题目的大致意思就是手中的硬币数拿出若干枚正好等于s&#xff0c;分三种情况 .如果n > s && b < s,输出no .如果b > s,输出yes .如果n * (a < (s / n) ? a : (s / n)) b >…

数据结构(C语言版)02---链表

链表&#xff1a; 声明&#xff1a;LNode* LinkList在链表里面这两个是等价的; #include<stdio.h> #include<stdlib.h> typedef int Elemtype; typedef struct LNode{Elemtype data;struct LNode* next; }LNode,*LinkList; 链表打印函数&#xff1a; //打印v…

【iOS ARKit】RealityKit 同步机制

协作 Session 可以很方便地实现多用户之间的AR体验实时共享&#xff0c;但开发者需要自行负责并确保AR场景的完整性&#xff0c;自行负责虚拟物体的创建与销毁。为简化同步操作&#xff0c;RealityKit 内建了同步机制&#xff0c;RealityKit 同步机制基于 Multipeer Connectivi…

Python标准库sys常用函数、方法及代码实战解析【第108篇—标准库sys常用函数】

Python标准库sys常用函数、方法及代码实战解析 在Python的标准库中&#xff0c;sys 模块是一个常用而强大的工具&#xff0c;它提供了与Python解释器交互的函数和变量。本文将介绍sys模块的一些常用函数和方法&#xff0c;并通过实际的代码实例来解析它们的用法。 1. sys.argv…

C语言统计文件夹下所有文件数量/C语言删除文件夹下所有文件

代码解法不唯一&#xff0c;欢迎在评论区留下你的实现方式和想法&#xff0c;我会将好的解法更新到文章中&#xff01;&#xff01; 在C语言中&#xff0c;可以使用标准库中的函数来完成对文件夹中文件数量的判断和删除操作。下面是使用POSIX标准的代码示例&#xff0c;这段代…

Kafka是如何防止消息丢失的

Kafka通过一系列机制来防止消息丢失&#xff0c;主要包括以下几个方面&#xff1a; 生产者端&#xff08;Producer&#xff09;保证&#xff1a; 同步发送&#xff1a;生产者默认是异步发送消息的&#xff0c;但如果希望保证消息不丢失&#xff0c;可以选择将异步发送改为同步…

2024.2.19

1.TCP模型 服务器端 #include <myhead.h> #define SER_IP "192.168.199.129" #define SER_PORT 8899int main(int argc, const char *argv[]) {//1.创建用于连接的套接字文件int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){perror("socket error"…

P1331 海战

难度&#xff1a;普及- 题目背景 在峰会期间&#xff0c;武装部队得处于高度戒备。警察将监视每一条大街&#xff0c;军队将保卫建筑物&#xff0c;领空将布满了 F-2003 飞机。 此外&#xff0c;巡洋船只和舰队将被派去保护海岸线。不幸的是&#xff0c;因为种种原因&#x…

react 原理揭秘

1.目标 A. 能够知道setState()更新数据是异步的 B. 能够知道JSX语法的转化过程 C. 能够说出React组件的更新机制 D. 能够对组件进行性能优化 E. 能够说出虚拟DOM和Diff算法 2.目录 A. setState()的说明 B. JSX语法的转化过程 C. 组件更新机制 D. 组件性能优化 E. 虚拟DOM和D…

[Vulnhub]靶场 Web Machine(N7)

kali:192.168.56.104 主机探测: arp-scan -l 靶机ip:192.168.56.104 端口扫描 nmap -p- 192.168.56.106 看一下web 目录扫描 gobuster dir -u http://192.168.56.106 -x html,txt,php,bak,zip --wordlist/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt exp…

【QT 5 +Linux下软件qt软件打包+qt生成软件创建可以安装压缩包+学习他人文章+第三篇:学习打包】

【QT 5 Linux下软件qt软件打包qt生成软件创建可以安装压缩包学习他人文章第三篇&#xff1a;学习打包】 1、前言2、实验环境3、自我学习总结-本篇总结&#xff08;1&#xff09;了解安装包的目录结构&#xff08;2&#xff09;了解要编写文件与编写脚本1. control文件2. postin…

NVMFS5113PLWFT1G汽车级功率MOSFET 60V 10A/64A满足AEC-Q101标准

AEC-Q101认证标准详细解读&#xff1a; AEC-Q101是一种汽车电子元件可靠性标准&#xff0c;由汽车电子委员会&#xff08;Automotive Electronics Council&#xff0c;简称AEC&#xff09;制定。该标准旨在确保在汽车环境中使用的电子元件具有足够的可靠性和耐久性。 AEC-Q10…