anchorage @ 2022-06-27 22:38:17
#include <stdio.h>
#include<string.h>
int main()
{
char s[1000];
gets(s);
for (int i = strlen(s) - 1; i >= 0; i--)
{
printf("%c", s[i]);
}
return 0;
}
by ineverleft @ 2022-06-27 22:53:11
@anchorage 用c++98就行了
by ineverleft @ 2022-06-27 22:53:54
由于可以无限读取,所以在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代(具体用法看下面示例)。
by Pretharp @ 2022-06-27 22:54:14
gets()
被禁用了,这里改成用其它方式输入
by rzh123 @ 2022-06-27 23:46:56
@ineverleft 照您说的应该是 CE,但他是 WA,他是 \r
问题
by rzh123 @ 2022-06-27 23:47:42
@anchorage
Linux 中换行符是'\n'而Windows中是'\r\n'(多一个字符),有些数据在 Windows 中生成,而在洛谷评测机 Linux 环境下评测。这种情况在字符串输入中非常常见。
——《洛谷全站帮助》
另外 gets
确实被删了,建议不要用。
by anchorage @ 2022-06-28 23:36:54
@rzh123 不太懂,能解释一下吗
by rzh123 @ 2022-06-28 23:42:11
@anchorage 相当于输入时数据里每一行末尾换行符前多了一个字符 \r
,比如样例,您的程序评测时会读取到 123.4\r
,所以 strlen(s)-1
改成 strlen(s)-2
就过了
by anchorage @ 2022-06-28 23:59:27
@rzh123 非常感谢