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

#include<stdio.h> const int N=1000; void line(char str[]) { int i=0; char ch; while((ch=getchar())!='\n') { str[i]=ch; i++; } str[i]='\0'; int main(void) { char s1[N+1]; char s2[N+1]; line(s1); line(s2); int i=0; while(s1[i]!='\0'&&s2[i]!='\0'&&s1[i]==s2[i]) { i++; } if(s1[i]=='\0'&&s2[i]=='\0') { printf("-1"); } else { printf("%d",i); } } return 0; }
这段代码试图读取两行字符串,然后比较它们,输出第一个不同字符的位置(从0开始),如果完全相同则输出-1。但代码有一个结构错误:`main`函数被嵌套在了`line`函数内部,这会导致编译错误。

- 注意函数定义不能嵌套。`main`函数应该独立定义在`line`函数之外,而不是放在`line`函数的花括号里面。
- 另外,`line`函数中使用了`getchar()`读取字符,但`getchar`的返回值类型是`int`,用`char`类型变量接收可能无法正确检测文件结束符EOF,不过对于只读取换行符结束的输入,当前写法基本可用。