在线编译器 C

#include <stdio.h> #include <string.h> int main() { char str[1001]; fgets(str,sizeof(str),stdin); size_t len=strlen(str); if(len>0&&str[len-1]=='\n'){ str[len-1]=='\0'; len--; } for(int i=len-1;i>=0;i--){ putchar(str[i]); } putchar('\n'); return 0; }
这段代码的目的是从标准输入读取一行字符串,然后将其反转输出。代码整体思路正确,但存在一个逻辑错误。

- 在去除末尾换行符时,代码使用了 `str[len-1]=='\0'`,这是一个比较操作,而不是赋值操作。应该使用赋值运算符 `=` 来将换行符替换为字符串结束符。

- 另外,`fgets` 读取的字符串可能包含换行符,但处理时需要注意 `strlen` 返回的长度已经包含了换行符的位置,修改后需要同步更新 `len` 的值。