输入控制(无限循环问题,c编程)[复制]

rslzwgfq  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(141)

此问题在此处已有答案

(18个答案)
4天前关闭。
我不断得到价值观 只要用户不输入正整数(我控制用户输入负值还是整数)。我尝试不使用isdigit,当我输入字符时,它会进入无限循环。

int quantity;
        
printf("Please enter term(s) number");
scanf("%d",&quantity);
while( 1){
    if(quantity<0){
        printf("Please enter “positive”  number");
        scanf("%d",&quantity);
    }

    if(!(quantity>='0' && quantity<='9')){
        printf("Please enter “a”  number");
        scanf("%d",&quantity);
    }
}
xzv2uavs

xzv2uavs1#

使用fgets()获取整行,使用strtol()将整行解析为整数,检查它是否占用了整行。

char *end;
char buf[LINE_MAX];

do {
     if (!fgets(buf, sizeof buf, stdin))
        break;

     // remove \n
     buf[strlen(buf) - 1] = 0;

     int n = strtol(buf, &end, 10);
} while (end != buf + strlen(buf));

相关问题