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); .