Из бинарного файла запись выводится бесконечно
с++ Мне нужно вывести информацию из бинарного файла на экран, но выводится только первая запись и, похоже, бесконечное количество раз
Найден человек, проживающий по адресу с номером телефона: 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++;
}