Онлайн компилятор C

#include <stdio.h> int main() { char s1[1001],s2[1002]; int i= 0; scanf("%[^\n]", s1); scanf("\n%[^\n]", s2); while (s1[i] != '\0'&&s2[i] != '\0') { if (s1[i]!=s2[i]){ printf("%d", i); return 0;} i++; } if (s1[1]=='\0'&&s2[i]=='\0') printf ("-1") return 0; }
这段代码试图比较两个字符串,找出它们第一个不同字符的位置(从0开始计数)。如果完全相同,则输出-1。但代码中存在一些逻辑和语法问题。

- 在最后判断完全相同的条件中,你写的是 `s1[1]=='\0'`,这检查的是第二个字符是否为空,而不是整个字符串是否结束。应该检查当前比较位置 `i` 是否已经到达字符串末尾,即 `s1[i]=='\0'` 且 `s2[i]=='\0'`。
- 最后的 `printf ("-1")` 语句末尾缺少分号,会导致编译错误。