问题描述
我正在尝试一一获取两个整数输入。但是当我对第一个输入使用错误的输入格式(如字符/字符串/浮点数)时,程序结束时没有获得第二个输入的输入。
虽然有一些方法可以解决这个问题,比如使用 isdigit() 和 char 输入,但我想使用 scanf_s 和 "%d" 来解决这个问题。
#include <stdio.h>
int main() {
unsigned int id = 0;
printf("Enter ID\n");
scanf_s("%d",&id);
printf("%d\n",id);
unsigned int id2 = 0;
printf("Enter ID2\n");
scanf_s("%d",&id2);
printf("%d\n",id2);
return 0;
}
解决方法
与 scanf
一样,scanf_s
返回成功分配的字段数。所以只需使用:
if(scanf_s("%d",&id) != 1) {
// Handle error
}
你可以这样做:
int r;
do {
printf("Enter ID\n");
r = scanf_s("%d",&id);
} while(r!=1)