Дублирование последней введенной строки. Язык си

Когда вывожу данные из файла, почему-то дублируется последняя введенная строка. В чем проблема?

Вот функция ввода:

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", &notebook.BirthDate);
        printf("Месяц -> ");
        scanf("%u", &notebook.BirthMonth);
        printf("Год -> ");
        scanf("%u", &notebook.BirthYear);
        printf("Введите адрес:\nУлица -> ");
        scanf("%s", notebook.addresSTREET);
        printf("Номер дома -> ");
        scanf("%u", &notebook.addresHOME);
        printf("Введите номер мобильного телефона -> ");
        scanf("%u", &notebook.mobileNUMBER);

        fwrite(&notebook, 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);
    }
}

результат работы программы


Ответы (0 шт):