while 和 eof 不起作用
while and eof won't work
当我想用 CTRL+C 关闭它时,我的 while cyclus 无法工作
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;
关闭程序
你做的第一个测试是res
,EOF
实际上只是数字-1
,不等于1
,导致第一个if
解析为 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;
}
}
当我想用 CTRL+C 关闭它时,我的 while cyclus 无法工作
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;
你做的第一个测试是res
,EOF
实际上只是数字-1
,不等于1
,导致第一个if
解析为 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;
}
}