关于不同系统换行符的建议
  • 板块工单反馈版
  • 楼主囧仙
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/12/11 23:33
  • 上次更新2023/11/3 22:25:25
查看原帖
关于不同系统换行符的建议
330759
囧仙楼主2021/12/11 23:33

Windows\text{Windows} 换行符是 \r\n\verb!\r\n!,而 *nix\text{*nix}Mac\text{Mac} 系统的换行符都是 \n\verb!\n!。由于洛谷是在 Linux\text{Linux} 环境下评测的,因此换行符是 \n\verb!\n!,这是与 CCF\text{CCF} 的评测环境相符的。

C++\text{C++} 的输入中有个机制,在 Windows\text{Windows} 下在程序输入时默认会把 \r\n\verb!\r\n! 转换成 \n\verb!\n!,在 Linux\text{Linux} 下不做处理。因此理论上,只要文件的换行符合所处的系统环境,那么程序的运行结果是没有区别的

然而很多上传数据者并没有注意到使用正确的换行符。因此如果数据是在 Windows\text{Windows} 下造的但不做任何处理就上传,在洛谷评测时就会在输入文件里多出一个 \r\verb!\r!;如果数据恰好是在 *nix\text{*nix} 下造的,那么就没有多出来的 \n\verb!\n!。有些程序对数据的合法性有比较大的要求(尤其是在使用 getchar\verb!getchar! 时。两种不同情况下需要的调用次数不同)。做题者在做题时是不知道数据的换行符情况的;更为糟糕的是,有些题目因为历史原因数据里部分是 Windows\text{Windows} 下造的,部分是 *nix\text{*nix} 下造的。这往往会对用户造成极大困扰,特别是在初学者不知道这种问题的时候。

所以我的建议是,在用户上传文件时,可以选择让洛谷对数据进行处理,自动去除多余的 \r\verb!\r!;或者在醒目的位置(比如上传&下载处)表明这类区别,以及放置可以自动除去多余 \r\verb!\r! 的程序。

2021/12/11 23:33
加载中...