输入无效时忽略C scanf

输入无效时忽略C scanf,c,scanf,C,Scanf,我写了这段代码,它要做的就是输入整数,直到输入负数: int result = 0, input_number = 0; while(input_number >= 0){ printf("Please enter students IDs(negetive to stop)= "); result = scanf("%d", &input_number); if(result != 1){ printf("Invalid input! t

我写了这段代码,它要做的就是输入整数,直到输入负数:

int result = 0, input_number = 0;
while(input_number >= 0){
    printf("Please enter students IDs(negetive to stop)= ");
    result = scanf("%d", &input_number);

    if(result != 1){
        printf("Invalid input! try again...\n");
        continue;
    }
}
当输入为int时,一切正常

但当输入字符时,任何字符都不是int

循环变得无休止,scanf不再请求任何输入

不要建议我使用scanf的替代品,因为这是学校的工作, 必须使用scanf

输入字符输出后:

Please enter students IDs(negetive to stop)= 4
Please enter students IDs(negetive to stop)= 5
Please enter students IDs(negetive to stop)= r
Please enter students IDs(negetive to stop)= Invalid input! try again...
Please enter students IDs(negetive to stop)= Invalid input! try again...
Please enter students IDs(negetive to stop)= Invalid input! try again...
Please enter students IDs(negetive to stop)= Invalid input! try again...
Please enter students IDs(negetive to stop)= Invalid input! try again...
Please enter students IDs(negetive to stop)= Invalid input! try again...
...

读取字符串,%s是格式说明符,然后在代码中转换为int。如果你是C++,AtoI或Struto就可以工作。 C或C++


C++

继续;->scanf%*[^\n];持续马克-我试过了,没有效果;谢谢蓝精灵!工作!