在Uni,我们必须编程LIFE,因此必须制作一个菜单。要读取用户对菜单的输入,我们应该编写一个读取函数来处理/删除换行符/输入。我们写了以下内容:
char reading ( ) {
char input ;
while (input != '/n') {
cin.get (input) ;
return input;
}
}
如果我们用此功能替换现在的cin,我们输入第一个菜单选项后会打印两次菜单。如果我们输入类似kkk的东西,这不是菜单的选项,它会打印菜单4次。我问了一个帮助助手,他不知道,发现这个功能似乎是正确的,而且他现在不知道的可能是非常明显的。据说我们的菜单代码也没什么问题。你知道可能出了什么问题,可以向我解释一下吗?非常感谢!
答案 0 :(得分:1)
你永远不会初始化input
,所以当你第一次在循环中阅读时,你会有未定义的行为,因此你的程序完全没有意义。读取未初始化的变量是UB,简单明了。
你的代码还有其他问题(比如并不总是从声明返回char
的函数中返回一个值),但是UB胜过所有 - 只要代码有UB,没有其他真正重要的