only getchar and scanf are allowed for user input.
Use fgets()
would be better. But living with this restriction ....
When it scanf(" %d ", &size );
returns 0, non-numeric input remains at stdin
.
- OP-.
, , . , .
" %d "
. A " "
scanf()
, . , scanf(" %d ", &size );
, - "123\n4\n"
. 4
, . .
, EOF
( ). sizeOfField()
. .
int sizeOfField(void) {
int inputCheck;
do {
int size;
inputCheck = scanf("%d", &size);
if (inputCheck == EOF) {
break;
}
int ch;
while ((ch = getchar()) != '\n' && ch != EOF);
if (inputCheck == 1) {
return size;
}
if (ch == EOF) {
break;
}
printf("Invalid Input!\n" "Try again");
fflush(stdout);
}
exit(EXIT_FAILURE);
}
, , " %d"
"%d"
. , , , ( '\n'
) . , - stdin
, , , "" stdin
. while ((ch = getchar()) != '\n' && ch != EOF);
.