Отдельный ввод от разбора.
Рассмотрим вспомогательную функцию. Используйте fgets()
, чтобы прочитать, а затем проанализировать.
// return 0 on success, EOF on end of file
int read_int(const char *prompt, int min, int max, &val) {
#define LINE_N 100
while (1) {
fputs(prompt, stdout);
fflush(stdout);
char buf[LINE_N];
if (fgets(buf, sizeof buf, stdin) == NULL) {
return EOF;
}
char *endptr;
errno = 0;
long val = strtol(buf, &endptr, 0);
// Validate an integer was read and if it is in range
if (endptr > buf && errno==0 && val >= min && val <= max) {
return (int) val;
}
}
}
Использование
int menu;
if (get_int("Choose a menu (1-4):\n", 1, 4, &menu) == EOF) {
printf("Input closed\n");
return 0;
}
if(menu == 1) {
...