Чтение строк файла - остается лишний символ при очередном проходе - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д