我希望用户输入int 1,2或3.如何防止输入小数并使程序崩溃?
答案 0 :(得分:3)
一般来说,你想练习防御性编程。假设用户输入错误或恶意输入并正确清理它。在这种情况下,这意味着假设用户可以输入任何内容,尝试从中解析出一个int,如果可能的话,如果没有,则向用户提供一条错误消息,说明他们输入的输入不正确。
在代码中,这意味着读取一行输入,如果您使用bog标准C作为控制台/终端应用程序,并使用fgets()
或{{1}之类的函数,则可能使用atoi()
}}。这些将解析输入字符串并返回一个整数值。如果输入中存在无效数据,则不会标记它。你必须自己做。这可以通过循环遍历字符串,查找不是数字的任何字符来轻松完成。如果找到,请向用户输出错误消息。
如果您需要任何其他详细信息,我可以提供。但是,我不会提供一堆现成的代码。
答案 1 :(得分:1)
// Return 1, 2 or 3 on good input
// else return 0
int Get123() {
int c = fgetc(stdin);
if ((c < '1') || (c > '3')) {
return 0;
}
return c - '0';
}