Когда я беру вейл из stdin
, который слишком велик для c
, сброс происходит не так, как ожидалось. Пользователю будет предложено ввести код, но после ввода появится дополнительная новая строка, где требуется ввод, чем проверка длины не удалась.
void clear(void) {
while (getchar() != '\n')
;
}
int add_flight(code_t codes[], int lf) {
char c[MAX_CODE_LEN + 1];
int s = 0;
while (s == 0) {
printf("Enter code>\n");
if (fgets(c, sizeof c, stdin)) {
printf("%s", c);
if ('\n' == c[0]) {
printf("Invalid input\n");
} else if (c[sizeof c - 1] == '\0' && c[sizeof c - 2] != '\n') {
clear();
printf("Invalid input\n");
memset(c, 0, sizeof c);
} else {
strcpy(codes[lf].id, c);
s = 1;
break;
}
}
}
return 0;
}
Любая помощь будет принята с благодарностью.