功能论证太少..这是什么意思我哪里出错了?

时间:2015-10-13 22:07:10

标签: c function

这是我的代码:

HowItWorksViewController

我希望用户输入1到3之间的数字,我需要验证功能来验证它。谁能解释一下我哪里出错了?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您的(setf retcode (my-special-cmd "ls" :output stream1 :error stream2)) (print (list stream1 stream2 retcode)) 必须被称为:

validate

因为你的菜单有1到3之间的选择,你的功能应该是:

//Validate user input using a functuion
Valid_Selection = validate(1, 3);

并且只能有一个具有该名称的函数,因此请删除第二个函数。顺便说一下,第二个中的int validate(int low, int high) { int s=0; char buf[128]; do { if (fgets(buf,128,stdin)==0 || sscanf(buf, "%d", &s)!=1 || (s<low || s>high)) printf("invalid Input, try again:"); else return s; } while (1); } 必须写成:while (0<selection<4)

编辑:请注意检查while (0<selection && selection<4)的返回值。它告诉我们sscanf是否可以读取指定的值类型sscanf,并注意传递存储结果的整数的地址。将%d初始化为零可确保在输入无效时不会退出while循环。

编辑:修复Chux的注释以消耗stdin。