Online Compiler C

#include <stdio.h> int main() { char a[1001],b[1001]; //scanf("%[^\n]%[^\n]", a, b); fgets(a,sizeof(a),stdin); fgets(b,sizeof(b),stdin); char *pa, *pb; pa = &a[0]; pb = &b[0]; int COUNT = 0; while(*pa == *pb && *pa != '\0') { pa++; pb++; COUNT++; } if(*pa != *pb) { printf("%d", COUNT); } if(*pa == '\0') { printf("-1"); } return 0; }
这段代码试图比较两个字符串,找出它们从开头开始连续相同字符的个数。如果其中一个字符串是另一个的前缀,则输出-1,否则输出相同字符的个数。

代码中存在一个逻辑问题:当两个字符串完全相同时,`while`循环会一直执行到`*pa == '\0'`,此时`*pa == *pb`成立,循环退出后`*pa == '\0'`,程序会输出-1。但根据常见题目要求,完全相同时通常应该输出字符串长度,而不是-1。

- 检查当两个字符串完全相同时,你的程序输出什么?思考一下题目是否要求在这种情况下输出-1。
- 注意`fgets`会读取换行符`\n`到字符串中,这可能会影响比较结果。考虑是否需要去除换行符。