错误描述
发生在程序需要读入多行字符串时,本地测试无误而在洛谷在线IDE上却无法得到正确结果
一个可能出错的原因:
事实上在洛谷全站帮助中已经写到了这个原因:
Linux 中换行符是’\n’而Windows中是’\r\n’(多一个字符),有些数据在 Windows 中生成,而在洛谷评测机 Linux 环境下评测。这种情况在字符串输入中非常常见。
如本人代码中使用的屏蔽换行字符读入
do{
scanf("%c",&ch);
}while(ch == '\n');//屏蔽换行读入字符
因为题目的输入是在windows环境下得到,换行为\r\n
而在linux终端运行的评测机运行上述代码则只会屏蔽\n,而不会屏蔽\r
此时将字符输出后会突兀的出现M
解决方法
像上面这种代码,屏蔽\n时将\r也顺带屏蔽,即写成
do{
scanf("%c",&ch);
}while(ch == '\n' || ch == '\r');//屏蔽换行读入字符