【问题标题】:while and eof won't workwhile 和 eof 不起作用
【发布时间】:2016-12-01 21:19:38
【问题描述】:

当我想用 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;关闭程序

【问题讨论】:

    标签: c scanf eof


    【解决方案1】:

    你做的第一个测试是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;
        }
    }
    

    【讨论】:

    • 感谢您的帮助,但另一个问题是,当我 scanf 3.8 或某个双数时,它会调用我的函数一二三,然后它会 printf 由于双数而输入错误...我想关闭时在调用函数之前它不是整数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2013-12-06
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多