Online Compiler C

#include <stdio.h> #include <string.h> int main() { char s[1001]; fgets(s,1001,stdin); s[strcspn(s,"\n")]=0; for(int i=strlen(s)-1;i>=0;putchar(s[i--])); }
这段代码的功能是:读取一行字符串,然后将其反转输出。它使用 `fgets` 读取输入,用 `strcspn` 去掉换行符,最后用循环从末尾向前逐个字符输出。

- 注意 `putchar(s[i--])` 在循环条件中同时完成了输出和索引递减,但循环的更新部分为空。这种写法虽然能工作,但可读性较差,容易引起混淆。建议将输出和索引更新分开写,让逻辑更清晰。
- 代码没有处理输入为空的情况。如果用户直接按回车,`s` 会变成空字符串,`strlen(s)-1` 会得到 -1,循环条件 `i>=0` 一开始就不成立,所以不会输出任何内容。但这不是错误,只是需要注意边界行为。