Online Compiler C

#include <stdio.h> int main() { char str[1001]; int i=0; char c; while ((c=getchar())!='\n'){ str[i]=c; i++; } str[i]='\0'; int k=0; while(str[k]!='\0'){ k++; } k--; while(k>=0){ putchar(str[k]); k--; } printf("\n"); return 0; }
这段代码的功能是:从键盘读取一行字符串(遇到换行符停止),然后将其反转输出。

代码的主要流程是:
1. 用 `getchar()` 逐个读取字符存入数组 `str`,直到遇到换行符。
2. 在字符串末尾添加空字符 `'\0'` 作为结束标志。
3. 通过循环找到字符串的长度(`k` 最终指向最后一个字符的位置)。
4. 从最后一个字符开始向前遍历,逐个输出字符,实现反转。
5. 最后输出一个换行符。

- 注意变量 `c` 的类型是 `char`,但 `getchar()` 返回的是 `int` 类型。当输入字符超出 `char` 范围(如某些扩展字符)或遇到文件结束符时,可能会出现问题。建议将 `c` 的类型改为 `int`,并在循环条件中检查是否等于 `EOF`。
- 代码中先计算字符串长度再反转,其实可以合并为一个循环:在读取字符的同时记录位置,然后直接从末尾向前输出,但当前写法逻辑清晰,没有错误。