C/C++代码本地测试正确但在洛谷IDE却错误的一个解决方法

错误描述

发生在程序需要读入多行字符串时,本地测试无误而在洛谷在线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');//屏蔽换行读入字符
  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值