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

#include <stdio.h> int main() { char a[1001],b[1001]; scanf("%[^\n] \0 %[^\n]", a, b); char *pa, *pb; pa = &a[0]; pb = &b[0]; int COUNT = 0; while(*pa = *pb && *pa != '\0') { p++; COUNT++; } if(*pa != *pb) { printf("%d", COUNT); } if(*pa == '\0') { printf("-1"); } return 0; }
这段代码试图比较两个字符串,找出第一个不同字符的位置,但存在多个问题。

- 第5行的scanf格式字符串有误,`\0`是空字符,不能直接写在格式字符串中,这会导致输入读取不正确。
- 第10行的while循环条件中,`*pa = *pb`是赋值操作而不是比较,应该使用`==`。同时循环内使用了未定义的变量`p`,应该是`pa`或`pb`。
- 循环逻辑不清晰:你似乎想同时移动两个指针并计数,但条件写错了,而且没有正确递增两个指针。

- 检查while循环的条件:你需要同时比较两个字符是否相等,并且都不是结束符。注意赋值和比较的区别。
- 确保在循环中同时移动两个指针(pa和pb),并且每次移动后计数器加1。当前代码只移动了未定义的`p`。