如果字符串在c中相同则返回0,代码中发生了什么?

J P*_* Pi 3 c function strcmp

我找到了一个与之相同的功能strcmp但我无法看到比较s1 == s2发生的位置.我需要帮助.谢谢.

int MyStrcmp (const char *s1, const char *s2)
{
    int i;
    for (i = 0; s1[i] != 0 && s2[i] != 0; i++)
    {
        if (s1[i] > s2[i])
            return +1;
        if (s1[i] < s2[i])
            return -1;
    }

    if (s1[i] != 0)
        return +1;
    if (s2[i] != 0)
        return -1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

HSK*_*HSK 5

如果s1 == s2,这也意味着两个字符串的长度相等.记住这一点,通过for循环,循环中的if语句都不是真的.因此,我们将for循环转义为s1[i] = s2[i] = 0,并i设置为给定的字符串的长度.现在对于剩余的两个if语句,没有任何条件为真s1[i] = s2[i] = 0.因此代码返回0.