strchr()、strrchr()、strchrnul()函数

原文链接:http://blog.sina.com.cn/s/blog_8b745a5f01017t8b.html

头文件:#include

函数原型:

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

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

#define _GNU_SOURCE

头文件:#include

函数原型: char* strchrnul(char* str,int c);

注:使用strchrnul()函数需要先定义_GNU_SOURCE宏。

函数功能:

strchr(): 若c存在于str中,则返回c在str中出现的第一个位置的指针,否则返回NULL。

strrchr(): 若c存在于str中,则返回c在str中出现的最后一个位置的指针,否则返回NULL。

strchrnul(): 若c存在于str中,则返回c在str中出现的第一个位置的指针,否则返回字符串str末尾的空字符(表示字符串结束的字符)。

### strchr 函数的详细说明 在 C 语言中,`strchr` 函数用于在一个字符串中查找指定字符的第一个匹配位置。其函数原型如下: ```c char *strchr(const char *str, int c); ``` - 参数 `str` 表示需要被检索的字符串。 - 参数 `c` 表示要搜索的字符(注意:该字符会被转换为 `int` 类型)。 如果找到匹配的字符,`strchr` 返回指向该字符的指针;如果没有找到,则返回 `NULL`[^1]。 以下是一个完整的示例代码,展示如何使用 `strchr` 函数: ```c #include <stdio.h> #include <string.h> int main(void) { char str[] = "I welcome any ideas from readers, of course."; char *lc = strchr(str, 'o'); if (lc != NULL) { printf("strchr: %s\n", lc); } else { printf("Character not found.\n"); } return 0; } ``` 在上述代码中,`strchr` 函数会在字符串 `str` 中查找字符 `'o'` 的第一次出现,并返回从该字符开始的子字符串。如果未找到字符,则会输出提示信息[^2]。 ### strchrstrrchr 的区别 为了更好地理解 `strchr` 的用法,可以将其与 `strrchr` 进行对比。两者的主要区别在于搜索方向: - `strchr` 从左到右查找指定字符的第一个匹配位置。 - `strrchr` 从右到左查找指定字符的第一个匹配位置[^4]。 以下是同时演示 `strchr` 和 `strrchr` 的代码示例: ```c #include <stdio.h> #include <string.h> int main(void) { char str[] = "www.qq.com"; char *p1 = strchr(str, '.'); // 从左往右查找第一个 '.' char *p2 = strrchr(str, '.'); // 从右往左查找第一个 '.' if (p1 != NULL) { printf("strchr: %s\n", p1); // 输出 ".qq.com" } if (p2 != NULL) { printf("strrchr: %s\n", p2); // 输出 ".com" } return 0; } ``` 运行结果将显示两种函数的不同行为[^4]。 ### 注意事项 1. 如果字符串为空或未包含目标字符,`strchr` 将返回 `NULL`。 2. 字符串结束标记 `\0` 被认为是字符串的一部分,因此也可以作为目标字符进行查找。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值