C 字符串查找函数

C/C++ string库(string.h)提供了几个字符串查找函数,如下:

memchr在指定内存里定位给定字符
strchr在指定字符串里定位给定字符
strcspn返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量
strrchr在字符串里定位给定字符最后一次出现的位置
strpbrk在字符串str1里定位字符串str2里任意一个首次出现的字符
strspn返回字符串str1从开始字符到第一个不在str2中的字符个数
strstr在字符串str1中定位字符串str2首次出现的位置



函数说明:

1、memchr

原型:const void * memchr ( const void * ptr, int value, size_t num);

            void * memchr ( void * ptr, int value, size_t num);

参数:ptr,待查找的内存指针;

            value,要查找的值;

            num,内存大小。

说明:在ptr指向的内存中查找value,返回指向和value首次匹配的元素指针,如果没有找到,返回NULL指针。


2、strchr

原型:const char * strchr ( const char * str, int character);

            char * strchr ( char * str, int character);

参数:str,待查找字符串指针;

            character,要查找的值。

说明:在字符串str中查找character,返回指向和character首次匹配的元素指针,如果没有找到,返回NULL指针。


3、strcspn

原型:size_t strcspn ( const char * str1, const char * str2);

参数:str1,待查找的字符串指针;

            str2,要查找的字符串指针。

说明:在str1中查找str2中的字符,返回找到str2中任意一个字符时已查找的字符个数。


4、strrchr

原型:const char * strrchr ( const char * str, int character);

            char * strrchr ( char * str, int character);

参数:str,待查找的字符串指针;

            character,要查找的值。

说明:在str中查找character,返回指向与character最后一次匹配的元素的指针,如果没有找到,返回NULL指针。


5、strpbrk

原型:const char * strpbrk (const char * str1, const char * str2);

            char * strpbrk ( char * str1, const char * str2);

参数:在str1中查找str2中任意一个字符,返回指向与首次出现的str2中的任意一个字符匹配的元素的指针,如果没有找到,返回NULL指针。


6、strspn

原型:size_t strspn ( const char * str1, const char * str2);

参数:str1,待查找的字符串指针;

            str2,要查找的字符串指针。

说明:从str1的第一个字符开始算起,直到出现一个不在str2中的字符为止,返回字符个数。


7、strstr

原型:const char * strstr ( const char * str1, cosnt char *str2);

            char * strstr ( char * str1, const char * str2);

参数:str1,待查找的字符串指针;

            str2,要查找的字符串指针。

说明:在str1中查找匹配str2的子串,并返回指向首次匹配时的第一个元素指针。如果没有找到,返回NULL指针。
### C语言字符串查找函数 #### strchr 函数 `strchr` 是一个用于在字符串查找特定字符的函数。其原型定义如下: ```c char *strchr(const char *str, int c); ``` 其中 `str` 表示待搜索的字符串,`c` 则是目标字符(实际按照 unsigned char 类型处理)。如果找到该字符,则返回指向第一个匹配位置的指针;如果没有找到或者传入的是空字符串,则返回 NULL[^1]。 下面是一个使用 `strchr` 的例子: ```c #include <stdio.h> #include <string.h> int main() { const char str[] = "hello world"; char ch = 'o'; char *result; result = strchr(str, ch); if (result != NULL) { printf("Character '%c' found at position %ld.\n", ch, result - str + 1); } else { printf("Character not found."); } return 0; } ``` #### strstr 函数 另一个重要的字符串查找函数是 `strstr`,它用来在一个字符串中寻找另一个子串首次出现的位置。它的声明形式为: ```c char *strstr(const char *haystack, const char *needle); ``` 在这里,“haystack”代表源字符串,“needle”则是想要定位的小片段。当成功发现 needle 存在于 haystack 中时,会给出相应起始地址;反之则交付 null 指针[^1]。 以下是关于如何运用 `strstr` 进行模式匹配的一个实例程序: ```c #include <stdio.h> #include <string.h> int main() { const char sourceStr[] = "This is a simple example."; const char subStr[] = "simple"; char *position; position = strstr(sourceStr, subStr); if (position != NULL){ printf("Substring \"%s\" was found in the string.", subStr); } else{ printf("The substring could not be located within the given text."); } return 0; } ``` ### 总结 以上两个函数都是标准库 `<string.h>` 提供的基础工具,在日常开发中有广泛的应用场景。它们帮助开发者快速实现基本的文字检索需求,同时保持了良好的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值