在线编译器 C

#include <stdio.h> int main() { char m[1001]; char a; int sum=0,t=0; while(t<1000&&(a=getchar())!='\0'){ sum++; t++; } for(int i=0;i<sum/2;i++){ int temp=m[sum-i-1]; m[sum-i-1]=m[i]; m[i]=temp; } for(int i=0;i<sum;i++){ printf("%s",m); } return 0; }
这段代码试图读取输入并反转字符串,但存在几个关键问题。

代码首先用 `getchar()` 读取字符,但只计数 `sum` 而没有把字符存入数组 `m` 中。然后尝试反转 `m`,但此时 `m` 是未初始化的,内容不确定。最后循环打印 `m` 多次,而不是一次。

- 读取字符时,应该把每个字符存入 `m[t]`,比如 `m[t] = a;`,而不仅仅是计数。
- 反转后的打印只需要一次 `printf("%s", m);`,不需要循环多次。同时注意反转逻辑中 `sum` 是读取的字符数,但字符串末尾需要加上 `'\0'` 才能正确打印。