Создаю структуру. Ввожу данный . Сохраняю в файл. Затем вынимаю из файла и вывожу на экран.
struct sname
{
char fio[256];
int vozrast;
};sname s;
int main()
{ SetConsoleCP(1251);
SetConsoleOutputCP(1251);
FILE * kar;
kar = fopen("kar.bin", "wb");
cout << "Введите ФИО:";
cin.getline(s.fio, 256);
cout << "Введите возраст:";
cin >> s.vozrast;
cin.ignore();
fwrite(&s, sizeof(s), 1, kar);
fclode(kar);
kar= fopen("kar.bin", "rb");
fread(&s, sizeof(s), 1, kar);
cout << "ФИО:"<<s[i].fio<<endl;
cout << "Возраст:" << s[i].vozrast << endl;
fclose(kar);
return 0;
}
Каждый раз когда я ввожу данные структуры char fio[256]; int vozrast; сохраняются в файле. И как сделать цикл просмотра. Допустим я введу 5 записей с элементамиchar fio[256]; int vozrast; и в файле уже сохранен 2 записи. Того выходит 7 записей. Как сделать автоматический цикл, ну который определит, что в файле 7 записей структуры и выведет их на экран?
все очень просто. Читаем в цикле, пока не достигнем конца файла
FILE * pFile;
sname sn;
int n = 0;
pFile = fopen ("kar.bin","rb");
if (pFile==NULL) perror ("Ошибка открытия файла");
else {
while (fread(&sn, sizeof(sname), 1,pFile) != 1) {
n++;
// обрабатываем sn - печать и прочье
}
if (feof(pFile)) {
puts ("Конец файла достигнут.");
printf ("прочитано записей: %d\n", n);
}
else puts ("Конца файла не достигли.");
fclose (pFile);
}
feof в while вставлять нет смысла - он делает немного не то, что от него обычно ожидают - он не проверяет, будет ли сейчас конец файла, а проверяет, не был ли конец файла, когда с него последний раз читали (а в этом случае там будет не 1 - то есть, не одна запись).
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости