c++ - 代码没有返回正确的索引

标签 c++ c

我正在尝试解决一个小问题。我有两个字符串。 s1s2。我希望我的函数返回 s1 的第一个索引,该索引具有字符串 s2 中不存在的字符。这是我的代码。

int cad_nenhum_dos (char s1[], char s2[]){
int i,j;
    for (i=0;s1[i]!='\0';i++)
    {
            for (j=0;s2[j]!='\0';j++)
                    if (s1[i]!=s2[j]) return i;
    }
return -1;
}

如果我运行 s1="hello" s2="hellm",结果应该是索引 4,因为 s1 [4]='o'"o" 不存在于 s2 中...但我总是得到 0 时我运行这个。如果字符串相同,-1 可以正常工作。

我做错了什么?

问候

最佳答案

在你的内部循环中,当你发现一个相同的字符时,你需要跳出——因为当第二个字符串中有任何不同的字符时,你就会返回,即使一个更早的字符一个是一样的。你想要类似的东西

        for (j=0;s2[j]!='\0';j++)
                if (s1[i]==s2[j]) break;
        if (s2[j]==0)
                return i;

即当您遍历了第二个字符串的整个 而没有找到该字符时,您想返回第一个字符串的第 i 个字符。

关于c++ - 代码没有返回正确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034198/

相关文章:

c - Ansi C 链表我做错了什么?

c++ - 在 C/C++ 中获取文件大小、文件扩展名并将其分配到不同名称的新文件夹中

c++ - 使用 getline() 无限运行的匹配词 c++ 程序?

c++ - SDL2 CreateRenderer 抛出无效窗口错误

c++ - 为什么 AF_INET 不能与 SOCK_STREAM 一起工作?

c++ - 在Qt C++中的void插槽中使用return时的C2120

c - 8051 μCU - 如何处理并发中断?

c++ - Windows 的 Bignum 库?

c - 我动态分配的二维数组不会打印

c++ - 英特尔 C++ 编译器将对象中的 vptr(指向虚函数表的指针)存储在哪里?