Из бинарного файла запись выводится бесконечно

с++ Мне нужно вывести информацию из бинарного файла на экран, но выводится только первая запись и, похоже, бесконечное количество раз

Найден человек, проживающий по адресу с номером телефона: Petrov Ivan Ivanovich Saratov Positivnaya 5 1 9743877439

и так много раз. Как исправить, чтобы выводились все и по одному разу?

  void prosmotr(int argc, char* argv[]) {
    if (argc < 2) {
        printf("Мало параметров\nPress any key");

        return;
    }
    FILE* fb = fopen(argv[1], "rb+");
    if (fb == NULL) {
        printf("Error: не удалось открыть двоичный файл %s\n",
            argv[1]);
        printf("Press ENTER");

        return;
    }
    TBook Book;
    int nr = 1, kol=0;
    nr = fread(&Book, sizeof(Book), 1, fb);
    while (nr == 1) {
        printf("Найден человек, проживающий по адресу с номером телефона:\n");
        printf("%25s%20s%25s%20s%20s%2d%2d%20s\n", Book.FIO.F,
            Book.FIO.I, Book.FIO.O, Book.ADDRESS.city, Book.ADDRESS.street, Book.ADDRESS.house, Book.ADDRESS.flat, Book.number);

        kol++;
    }
    if (kol == 0)
        printf("Данные не найдены\n");
    else
        printf("Всего найдено: %d\n", kol);
    fclose(fb);
    printf("Press any key to continue");
    getch();
    return;

}

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

Автор решения: Mikhailo
int kol=0;
while (fread(&Book, sizeof(Book), 1, fb) == 1)
{
    printf("Найден человек, проживающий по адресу с номером телефона:\n");
    printf("%25s%20s%25s%20s%20s%2d%2d%20s\n", Book.FIO.F,
        Book.FIO.I, Book.FIO.O, Book.ADDRESS.city, Book.ADDRESS.street, Book.ADDRESS.house, Book.ADDRESS.flat, Book.number);
    kol++;
}
→ Ссылка