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

#include <stdio.h> #include <string.h> int main() { char a[1000]; scanf("%1000[^\n]", a); int len = strlen(a); for (int i = len - 1; i >= 0; i--) { putchar(a[i]); } return 0; }
这段代码的功能是读取一行字符串,然后将其逆序输出。它使用 `scanf` 读取最多1000个非换行字符,然后从最后一个字符开始逐个输出,实现反转。

- 注意 `scanf` 的格式 `%1000[^\n]` 会读取直到换行符为止,但不会消耗换行符。如果输入后还有换行符留在缓冲区,可能会影响后续输入,不过这里程序只运行一次,所以问题不大。
- 代码没有处理输入为空的情况。如果用户直接按回车,`a` 中可能没有有效字符,`strlen` 返回0,循环不会执行,输出为空,这是合理的。但更关键的是,`scanf` 在遇到空输入时可能不会正确读取,导致 `a` 未初始化,行为未定义。你可以考虑检查 `scanf` 的返回值来确保读取成功。