这是我的代码:
HowItWorksViewController
我希望用户输入1到3之间的数字,我需要验证功能来验证它。谁能解释一下我哪里出错了?这样做的正确方法是什么?
答案 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。