编写一个函数char*findx ( const char*s, const char*x),在C风格的字符串s中找到字符串x首次出现的位置。
时间: 2024-03-10 18:48:50 浏览: 103
好的,以下是一个示例C++函数char* findx(const char* s, const char* x),用于在C风格的字符串s中找到字符串x首次出现的位置:
```cpp
char* findx(const char* s, const char* x)
{
// 如果s或x为空,则返回空指针
if (!s || !x) return nullptr;
const char* p1 = s;
const char* p2 = x;
const char* p3 = nullptr;
while (*p1)
{
if (*p1 == *p2)
{
if (!p3) p3 = p1;
p2++;
if (!*p2) return const_cast<char*>(p3);
}
else
{
p2 = x;
if (p3) p1 = p3;
p3 = nullptr;
}
p1++;
}
return nullptr;
}
```
该函数使用了三个指针p1、p2、p3,分别指向C风格字符串s、x以及匹配到x的起始位置。当p1指向的字符与p2指向的字符相同时,如果p3为空,则将p3指向p1,表示匹配的起始位置;如果p3不为空,则说明之前已经匹配到一部分,不需要再重复匹配。当匹配完成时,返回p3,即匹配的起始位置。如果匹配失败,则返回空指针。
注意,由于该函数返回的是const char*类型,所以用const_cast<char*>将其转换为char*类型。
阅读全文