Чтение строк файла - остается лишний символ при очередном проходе - C (СИ)
Формулировка задачи:
Здраствуйте. Есть функция которая циклично считывает строки и числа со стандартного потока.
примерно так:
Эта функция запускается несколько раз в цикле. Проблема в том, что после того как считается число scanf("%d", &car->insp_year); в буфере вроде как остается то ли '\n' то ли '\0' и на следущий раз этот символ попадает в gets(car->owner);, недавая пользователю ввести строку.
пробовал так fflush(stdin);, так: fgets(car->owner, SSC_OWNER - 1, stdin);, и даже так: fseek(stdin, 0, SEEK_END); даже функцию из википедии пробовал - ничерта не получается.
Помогите пожалуйтса
#define SSC_OWNER 64
#define SSC_BRAND 32
#define SSC_REG_NUM 16
typedef struct {
int id;
char owner[SSC_OWNER];
char brand[SSC_BRAND];
char reg_num[SSC_REG_NUM];
int issue_year;
int insp_year;
} CAR;
CAR* carInput(CAR* car) {
printf("Enter the owner's name:"); gets(car->owner);
printf("Enter the car brand:"); gets(car->brand);
printf("Enter the registration number:"); gets(car->reg_num);
printf("Enter the car issue year:"); scanf("%d", &car->issue_year);
printf("Enter the year of passing inspection. If not, enter 0:");
scanf("%d", &car->insp_year);
return car;
}Решение задачи: «Чтение строк файла - остается лишний символ при очередном проходе»
textual
Листинг программы
scanf("%d", &car->insp_year);
Объяснение кода листинга программы
- В данном коде используется функция scanf для ввода данных в переменную
car->insp_year. - Функция scanf принимает два аргумента: формат ввода и адрес переменной для сохранения введенных данных.
- Формат ввода
%dозначает, что ожидается ввод целого числа. car- это указатель на структуру, в которую будет сохранено значение переменной.insp_year- это название поля структуры, в которое будет сохранено значение переменной.- Значение переменной
car->insp_yearбудет сохранено в поле структурыinsp_year.