祖国山河一片紫

P1308 [NOIP2011 普及组] 统计单词数

@[T_T403](/user/1363582) 某些规范要求一个文本文件最后必须以空行结尾,这意味着最后一个字符就是 `\n`。但并非所有文本文件都遵循这种规范,很多文件不是以 `\n` 做结尾的。 经过测试,本题没有测试点的数据以 `\n` 结尾,[测试记录](https://www.luogu.com.cn/record/177613015)(RE 并返回 233 意味着不以 `\n` 结尾)。 这意味着什么呢?只通过判断字符是否是 `\n` 来决定循环跳出会导致程序跳不出循环。`s[++l2] = c;` 中的 `l2` 会累增到一个非常大的值,导致数组访问到不可读内存等,从而导致程序遭到系统强行中断,并且返回 RE 段错误。 那为什么本地测试没有 RE 呢?大概是因为你本地使用控制台输入数据,而控制台设置了缓冲区,必须要按一下回车进行输入换行,控制台才会将数据交给程序处理。意味着控制台输入的数据每行末尾必有换行 `\n`。
by Terrible @ 2024-09-20 13:57:29


|