如何防止用户在c中输入十进制值?

时间:2013-10-21 00:33:16

标签: c

我希望用户输入int 1,2或3.如何防止输入小数并使程序崩溃?

2 个答案:

答案 0 :(得分:3)

一般来说,你想练习防御性编程。假设用户输入错误或恶意输入并正确清理它。在这种情况下,这意味着假设用户可以输入任何内容,尝试从中解析出一个int,如果可能的话,如果没有,则向用户提供一条错误消息,说明他们输入的输入不正确。

在代码中,这意味着读取一行输入,如果您使用bog标准C作为控制台/终端应用程序,并使用fgets()或{{1}之类的函数,则可能使用atoi() }}。这些将解析输入字符串并返回一个整数值。如果输入中存在无效数据,则不会标记它。你必须自己做。这可以通过循环遍历字符串,查找不是数字​​的任何字符来轻松完成。如果找到,请向用户输出错误消息。

如果您需要任何其他详细信息,我可以提供。但是,我不会提供一堆现成的代码。

答案 1 :(得分:1)

除了简单的1-2-3之外,OP没有提供太多细节。以下是一个简单的解决方案

// 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';
}