Tôi muốn mã chạy cho đến khi người dùng nhập giá trị số nguyên.Làm thế nào để quét chỉ số nguyên?
Mã hoạt động cho mảng char và char.
Tôi đã làm như sau:
#include<stdio.h>
int main()
{
int n;
printf("Please enter an integer: ");
while(scanf("%d",&n) != 1)
{
printf("Please enter an integer: ");
while(getchar() != '\n');
}
printf("You entered: %d\n",n);
return 0;
}
Vấn đề là nếu người dùng nhập vào một giá trị float scanf
sẽ chấp nhận nó.
Please enter an integer: abcd
Please enter an integer: a
Please enter an integer: 5.9
You entered: 5
Làm cách nào có thể tránh được?
Điều này có giống không? http://stackoverflow.com/questions/23610457/how-can-i-distinguish-between-integer-and-character-when-using-scanf –
Nó không phải là 'quét một phao' mà là dừng ở số không đầu tiên . Nó cũng sẽ làm điều này với đầu vào "5xyzNotAFloatNumber". – usr2564301
Vì vậy, nó không thể được thực hiện với 'scanf'? Vì vậy, người ta phải luôn luôn sử dụng 'fgets'? – user1336087