在线编译器 C

#include <stdio.h> int main() { char a[1001] = {0}, b[1001] = {0}; scanf("%s%s", a, b); for (int i = 0; b[i] != '\0' || a[i] != '\0'; i++) { if (a[i] != '\0') { printf("%d", i); return 0; } else if (a[i] == '\0' && b = '\0') break; } printf("%d", -1); return 0; }
这段代码试图查找字符串a在字符串b中首次出现的位置,但存在多个逻辑错误。当前代码实际上只检查了a的第一个字符是否为空,然后立即输出索引并结束。

- 循环条件 `b[i] != '\0' || a[i] != '\0'` 会导致当其中一个字符串结束时循环继续,但内部逻辑没有正确比较两个字符串的内容。你需要重新设计循环,使其能逐字符比较a和b从某个起始位置开始的子串。

- 代码中 `b = '\0'` 是一个赋值语句,不是比较。在C语言中,比较两个字符应使用 `==` 运算符。另外,你需要在循环中实现一个嵌套的匹配过程,而不是只检查单个字符。