C++线性搜索返回0 所以我是C++的新手,我在JS中做代码,因为某种原因,我弄不清楚这里的错误,请帮帮我。谢谢 #include <iostream> using namespace std; int search(char input, char sentence[]){ for(int i = 2; i != '\0'; i++){ if(sentence[i] == input){ return i; }else{ return -1; } } } int main() { char key[20] = "hey my name is sid!"; char ser = 'm'; cout << search(ser,key); return 0; }

C++线性搜索返回0 所以我是C++的新手,我在JS中做代码,因为某种原因,我弄不清楚这里的错误,请帮帮我。谢谢 #include <iostream> using namespace std; int search(char input, char sentence[]){ for(int i = 2; i != '\0'; i++){ if(sentence[i] == input){ return i; }else{ return -1; } } } int main() { char key[20] = "hey my name is sid!"; char ser = 'm'; cout << search(ser,key); return 0; },c++,arrays,linear-search,C++,Arrays,Linear Search,for循环中的条件错误,您没有检查字符串,只是检查索引。此外,如果角色不匹配,则不希望立即退出 正确的代码是: for(int i = 0; sentence[i] != '\0'; i++) { if(sentence[i] == input) { return i; } } return -1; 如果要从第三个字符开始搜索,应首先确保字符串至少包含三个元素: if(strlen(sentence)>=3) { for(i

for循环中的条件错误,您没有检查字符串,只是检查索引。此外,如果角色不匹配,则不希望立即退出

正确的代码是:

for(int i = 0; sentence[i] != '\0'; i++)
{
    if(sentence[i] == input)
    {
        return i;        
    }
}
return -1;
如果要从第三个字符开始搜索,应首先确保字符串至少包含三个元素:

if(strlen(sentence)>=3)
{
    for(int i = 2; sentence[i] != '\0'; i++)
    {
        ...
    }
    ...
}

对于搜索函数,实际上只检查循环中的第一个字符,然后返回。你应该移动return-1;在for循环之外,因为只有在检查整个字符串的值并且没有找到该值之后,才会调用它

int search(char input, char sentence[]) {
    for (int i = 2; sentence[i] != '\0'; i++) {
        if (sentence[i] == input) {
            return i;
        }
    }
    return -1;
}

除了像其他用户提到的那样更改for循环的条件之外。

听起来您可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:我\0’???也许op想开始检查第三个元素的句子。。。