分块全RE求调

P2801 教主的魔法

[https://www.luogu.com.cn/paste/4lxz30r8](https://www.luogu.com.cn/paste/4lxz30r8)
by tang_mx @ 2023-10-27 20:27:32


……输入,改法很简单,注释掉getchar,输入字符改用scanf("%s")就过了 然而我太蒻了,不知道原因QAQ(也是以前一道题调不出来发现的)
by yinianxingkong @ 2023-10-27 20:28:59


@[yinianxingkong](/user/748694) 感谢大佬!!过了 顺便挂个二贴:为什么会RE呢?%c不是读取单个字符吗?为什么换成字符串的%s就行了?
by galiyuebing @ 2023-10-27 20:32:16


bdfs了一下……好像%c会吞字符,前面加个空格scanf(" %c")就能A 还是用%s罢……
by yinianxingkong @ 2023-10-27 20:33:27


@[yinianxingkong](/user/748694) 因为scanf不会读入行末换行符,导致下一行读入会多一个行末换行符,如果用%c读入就会读入这个换行符。scanf(" %c")前面的空格意思是跳过一个空白字符(指换行符,空格,制表符等),这样输入的字符就是正确的。 至于平时%d为什么不用scanf(" %d"),因为限制了必须是数字,所以这个换行符是非法的就会跳过。而%c不会,只要是字符就会合法
by cmach_socket @ 2024-01-29 11:41:07


@[cmach_socket](/user/239458) ok,谢谢。~~当然即便是这样我也不会用scanf("%c")的~~
by yinianxingkong @ 2024-01-29 11:45:02


|