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

#include <stdio.h> #include <string.h> int main() { char s[1001];int i = strlen(s) - 1 fgets(s, 1001, stdin); for (i; s[i] == '\n'; i--) ; for (; i >= 0; putchar(s[i--])) ; } return 0; }
这段代码试图读取一行字符串并反向输出,但存在几个问题。

首先,代码在读取字符串之前就计算了字符串长度,此时 `s` 数组未初始化,`strlen(s)` 的结果是未定义的。其次,第一个 `for` 循环的条件 `s[i] == '\n'` 逻辑有误,它会在遇到换行符时继续循环,而不是跳过换行符。另外,`main` 函数最后的 `return 0;` 写在了花括号外面。

- 注意 `strlen` 必须在字符串被正确赋值之后调用,否则长度是随机的。
- 第一个循环的目的是跳过末尾的换行符,但条件写反了,应该检查 `s[i]` 是否为换行符,如果是则跳过,而不是相等时继续循环。