Дублирование последней введенной строки. Язык си
Когда вывожу данные из файла, почему-то дублируется последняя введенная строка. В чем проблема?
Вот функция ввода:
void NEW_DATA(FILE* fPtr)
{
int ans=1;
struct DATA notebook;
do{
notebook.number++;
printf("Введите фамилию -> ");
scanf("%s", notebook.surname);
printf("Введите имя -> ");
scanf("%s", notebook.name);
printf("Введите отчество -> ");
scanf("%s", notebook.patronymic);
printf("Введите дату рождения:\nДень -> ");
scanf("%u", ¬ebook.BirthDate);
printf("Месяц -> ");
scanf("%u", ¬ebook.BirthMonth);
printf("Год -> ");
scanf("%u", ¬ebook.BirthYear);
printf("Введите адрес:\nУлица -> ");
scanf("%s", notebook.addresSTREET);
printf("Номер дома -> ");
scanf("%u", ¬ebook.addresHOME);
printf("Введите номер мобильного телефона -> ");
scanf("%u", ¬ebook.mobileNUMBER);
fwrite(¬ebook, sizeof(struct DATA), 1, fPtr);
fseek(fPtr, notebook.number * sizeof(struct DATA), SEEK_SET);
printf("Введите (1) - чтобы добавить еще (0) - закончить\n->");
scanf("%d", &ans);
} while (ans != 0);
}
А вот функция вывода:
void VIEW_DATA(FILE* readPtr)
{
DATA buf;
printf("№ | Фамилия | Имя | Отчество | Дата Рождения | Адрес | моб.телефон |\n");
while (!feof(readPtr)) {
fread(&buf, sizeof(buf), 1, readPtr);
if(buf.number!=0)
printf("%-2d| %-9s | %-5s | %-10s | %02u.%02u.%04u | %-7s,%3u | %-11u |\n",
buf.number, buf.surname, buf.name, buf.patronymic,
buf.BirthDate, buf.BirthMonth, buf.BirthYear,
buf.addresSTREET, buf.addresHOME, buf.mobileNUMBER);
}
}
