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;

关闭程序

你做的第一个测试是resEOF实际上只是数字-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;
    }
}