温馨提示×

scanf在C语言中如何处理错误输入

小樊
112
2024-08-08 06:00:50
栏目: 编程语言

当使用scanf函数接受用户输入时,如果用户输入的数据类型与指定的格式化字符串不匹配,或者输入的数据超出了变量的范围,scanf函数会返回一个非零值,表示输入错误。此时,我们可以通过检查scanf函数的返回值来处理错误输入。

例如,如果我们要接受用户输入一个整数,可以这样处理错误输入:

int num;
while(scanf("%d", &num) != 1) {
    printf("输入错误,请重新输入一个整数:");
    while(getchar() != '\n'); // 清空输入缓冲区
}

上面的代码中,当用户输入的不是一个整数时,scanf函数会返回一个非零值,此时会执行while循环,清空输入缓冲区并提示用户重新输入一个整数。

除了检查scanf函数的返回值之外,我们还可以使用feofferror函数来判断输入是否出错。例如:

int num;
while(1) {
    if(scanf("%d", &num) == 1) {
        break; // 输入正确,退出循环
    } else if(feof(stdin) || ferror(stdin)) {
        printf("输入错误,请重新输入一个整数:");
        clearerr(stdin); // 清除错误标志
        while(getchar() != '\n'); // 清空输入缓冲区
    } else {
        printf("输入错误,请重新输入一个整数:");
        while(getchar() != '\n'); // 清空输入缓冲区
    }
}

在这个例子中,我们使用feofferror函数判断输入是否出错,如果出错则清空输入缓冲区并提示用户重新输入一个整数。

0