Загрузить данные из файла в виде структур - C (СИ)
Формулировка задачи:
Подскажите пожалуйста, есть структура с данными:
эти данные без проблем сохраняю в файл так:
а вот восстановить из файла не получается.
вот пример того как пытаюсь сделать:
текстовый файл:
с него пытаюсь считать данные.
пока видится два варианта, это строковым способом считать или блочным.
вот блочным пытаюсь:
естественно не правильно, в s записывается всякий бред.
и вот текстовым пробую, пока так, но всё равно строка для переменной a считывается не полностью а до первого пробела, вобщем тоже не правильно. плюс на новую строку не переходит для считывания. не ясно как передвигаться по файлу.
подскажите каким способом лучше делать ну и намекните в каком направлении двигаться.
премного благодарен за помощь
struct Book{ char title[30]; char author[30]; short pages; double price; };
for (int i=0;i<n;i++) { fprintf(ff, "%s\n%s\n%d\n%f\n\n", s[i]->title, s[i]->author, s[i]->pages, s[i]->price); }
Zolotoy telenok
1Il`f i petrov
123
1000.000000
Konek gorbunok
Ershov
12
4.000000
Book** LoadFile(Book **s, int &n) { char fname [255]="1.txt"; FILE *ff=fopen (fname, "r"); fread(s, sizeof (Book), n, ff);
Book** LoadFile(Book **s, int &n) { char fname [255]="1.txt"; FILE *ff=fopen (fname, "r"); char a[255],b[255]; int c; float d; fscanf(ff, "%s\n%s\n%d\n%f\n\n", &a, &b, &c, &d); cout<<c;
Решение задачи: «Загрузить данные из файла в виде структур»
textual
Листинг программы
#include <iostream.h> #include <fstream.h> void main(void) { struct employee { char name [6 4] ; int age; float salary; } worker = { "Джон Дой", 33, 25000.0 }; ifstream emp_file("EMPLOYEE.DAT"); emp_file.read((char *) &worker, sizeof(employee)); cout << worker.name << endl; cout << worker.age << endl; cout << worker.salary << endl; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: iostream.h и fstream.h
- Определяется структура employee, которая содержит поля: name (строка, вмещающая 6 символов), age (целое число) и salary (число с плавающей точкой).
- Создается экземпляр структуры employee с именем worker, и инициализируются его поля:
Джон Дой
(name), 33 (age), 25000.0 (salary). - Открывается файл EMPLOYEE.DAT для чтения.
- Файл считывается начиная с адреса памяти, содержащего структуру employee, с использованием оператора read.
- Выводятся значения полей структуры worker: name, age, salary.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д