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

#include <stdio.h> #include <string.h> int main() { char s[1001]; fgets(s,1001,stdin); int l=strlen(s); if(s[l-1]=='\n') s[l-1]=0; for(int i=l-1;i>=0;putchar(s[i--])); return 0; }
这段代码的作用是:从标准输入读取一行字符串(最多1000个字符),然后将其反转输出。

代码的逻辑是:先用fgets读取字符串,然后去掉末尾的换行符,最后从字符串末尾向前遍历并逐个输出字符。

- 注意fgets会读取换行符并存入字符串,所以代码中通过检查并替换为结束符来移除它。但这里有一个潜在问题:如果输入字符串长度正好是1000(不含换行),fgets会读取1000个字符,此时字符串末尾没有换行符,那么s[l-1]就不是换行符,而是最后一个字符,这会导致最后一个字符被误删。

- 另外,for循环中的条件判断和自减操作写在一起,虽然能工作,但可读性较差。建议将循环体分开写,避免混淆。