while(1){
res=scanf("%d",&k);
if(res != 1){
printf("Bad input.\n")
return 1;
}
else if((k <= 0)){
printf("Bad input.\n");
return 1;
}
if(res == EOF){
return 0;
}
a=one(arr, arr_size, k);
b=two(arr, arr_size, k);
c=three(arr, arr_size, k);
printf("Sum: %d\n",a+b+c);
}
当我想要关闭它时,它只显示输入错误CTRL + D.我只想用return 0;
答案 0 :(得分:0)
您执行的第一项测试是res
,而EOF
实际上只是数字-1
,不等于1
,导致第一次if
1}}解析为true并返回1
。
这应该有效:
while(1) {
res=scanf("%d",&k);
/* first check for EOF */
if(res == EOF){
return 0;
}
/* then check input */
if(res != 1 || k <= 0) {
printf("Bad input.\n");
return 1;
}
}