【发布时间】:2021-02-14 21:29:14
【问题描述】:
我在弄清楚如何返回指向给定 C 字符串中单词的第一个字符的指针时遇到了问题。问题是这样的:编写函数 findFirst()。该函数有两个参数:一个 const char * s1 指向 C 风格字符串中的第一个字符,以及一个 const char * s2。如果 s2 没有出现在 s 中,则返回指向 s2 第一次出现在 s1 中的指针和 nullptr (0)。
这是我的代码:
#include <cstddef> // size_t for sizes and indexes
#include <iostream>
using namespace std;
const char* findFirst(const char *s1, const char *s2)
{
while (*s1) // go through each element in s1
{
++s1;
if (*s1 == *s2)
{
while(*s2)
{
++s1;
++s2;
if (*s1 == *s2 && *s2 == '\0' - 1)
return s1;
}
}
}
return nullptr;
}
int main()
{
const char * b = findFirst("Find me in this line", "me");
cout << b << endl;
}
【问题讨论】:
-
*s2 == '\0' - 1???您是否想查明s2是否指向空字符之前的最后一个字符? -
@iTnewbie 使用标准C函数strstr就够了。
-
您的问题之前好像是answered。
-
您的问题是什么?这个实现是否可行?不,它不会;当然不是针对所有情况,交互式 调试器 会很快揭示原因。随着循环的进行,只要观察
s1和s2所指的内容就可以提供大量信息,我强烈建议您这样做。