You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言验证函数从void改为int后printf错误提示重复输出如何解决

问题根因

你在main函数中重复调用了两次verify函数:

  • 执行完input完成数组赋值后,第一次无意义调用了verify(selection),未接收返回值
  • if判断逻辑中第二次调用verify(selection)获取返回值

非法输入场景下,两次调用都会触发verify内部的错误打印逻辑,自然会输出两次提示文本。

修复方案

删除冗余的第一次verify调用,将校验返回值存入变量复用即可,修改后的main函数代码如下:

int main (void){
    int selection[SIZE] = {0};
    input(selection);
    // 仅调用一次verify,返回值存到变量复用
    int is_input_valid = verify(selection);
    if (is_input_valid == 1) {
        printf("Correct!\n");
    }
    return 0;
}
可选优化建议

你当前的verify函数里重复写了两次错误提示文本,还出现了前后空格不一致的小问题,建议把错误提示统一放到校验逻辑末尾输出,代码更简洁易维护:

int verify(int selection[SIZE]){
    int para = 1;
    
    // 校验数字范围是否合法
    for (int i = 0; i < SIZE; i++) {
        if (selection[i] > 9 || selection[i] < 1) {
            para = 0;
            break;
        }
    }
      
    // 仅范围合法时才校验排序规则
    if (para) {
        for (int i = 0; i < SIZE - 1; i++) {
            if (selection[i] > selection[i+1]){
                para = 0;
                break;
            }
        }
    }

    // 校验不通过统一输出一次错误提示
    if (!para) {
        printf("Invalid input: 6 integers 1..9 in sorted order must be supplied.\n");
    }
    return para;  
}

内容的提问来源于stack exchange,提问作者Eras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 13:54:08