scanf 据我所知允许正则表达式不幸的是,它不允许使用正则表达式:语法误导性很强,但是在实现中甚至没有与regex相似的东西scanf。所有这些都支持正则表达式的字符类,因此%[<something>]将其隐式视为[<something>]*。这就是为什么您将scanfTranslation 调用转换为读取由以外的字符组成的字符串的原因'(', ')', 'x', and '\n'。为了解决您眼前的问题,您可以设置一个循环,逐个读取输入的字符。每次获得时'\n',请检查到目前为止,您输入的内容中至少包含三个字符,紧接其前的字符'\n'是'x',并且那之前的角色'x'是另一个'\n'如果以上所有条件均成立,则您已到达预期输入序列的末尾;否则,您的循环应继续。