char* StrChr(const char* str, char chr)
时间: 2023-12-22 07:03:32 浏览: 295
根据提供的引用内容,可以看出`strchr`和`strrchr`函数是C语言中的字符串处理函数,用于在字符串中查找指定字符的位置。其中,`strchr`函数返回字符串中第一次出现指定字符的位置,而`strrchr`函数返回字符串中最后一次出现指定字符的位置。
下面是一个实现类似功能的`StrChr`函数的例子:
```c
char* StrChr(const char* str, char chr) {
while (*str != '\0') { // 遍历字符串
if (*str == chr) { // 如果找到指定字符
return (char*)str; // 返回该字符的位置
}
str++; // 继续遍历
}
return NULL; // 如果未找到指定字符,返回NULL
}
```
该函数接受两个参数,第一个参数为要查找的字符串,第二个参数为要查找的字符。函数通过遍历字符串,逐个比较字符,如果找到指定字符,则返回该字符的位置,否则返回NULL。
相关问题
strstr(char*str1,char*str2)的实现代码
`strstr()`函数在C语言中是一个库函数,用于在一个字符串中查找另一个字符串首次出现的位置。它不是通过直接提供实现代码的,而是作为标准库的一部分由编译器提供。这个函数原型通常定义在`string.h`头文件里。
以下是一个简单的`strstr()`函数的使用示例,并非实际的源码实现:
```c
#include <string.h>
size_t strstr_example(const char *haystack, const char *needle) {
if (needle == NULL || *needle == '\0') { // 如果needle为空或者结束符,则返回NULL
return (char *)haystack; // 如果needle是空字符串,返回haystack指针
}
size_t len_needle = strlen(needle);
size_t pos = 0;
while ((pos = strchr(haystack + pos, needle[0])) != NULL) { // 从haystack开始,逐字符查找
if (memcmp(haystack + pos, needle, len_needle) == 0) { // 如果找到连续len_needle个字符匹配
return (char *)(haystack + pos); // 返回匹配位置
}
pos++; // 否则移动到下一个字符
}
return NULL; // 如果找不到匹配,返回NULL
}
```
怎么查找char*中的子字符串
在C++中,如果你有一个`char*`类型的字符串,想要查找其中的子字符串,可以使用`strstr()`函数,它来自`cstring`库。这个函数的工作原理是在给定的主串中搜索指定的子串,并返回子串的第一个匹配位置的指针。
例如:
```cpp
#include <cstring>
// 主串
const char* main_str = "Hello, World!";
// 搜索的子串
const char* sub_str = "World";
// 查找并存储结果
size_t found_pos = std::strchr(main_str, *sub_str) - main_str;
if (found_pos != nullptr) {
// 子串存在,找到的位置从0开始计数
std::cout << "子串在主串中的位置: " << found_pos << std::endl;
} else {
// 子串不存在
std::cout << "子串未找到" << std::endl;
}
```
这里使用`std::strchr()`函数查找第一个字符的匹配位置,然后减去`main_str`获取相对偏移。如果`strstr()`返回的是`nullptr`,表示子串没找到。
阅读全文