Загрузить данные из файла в виде структур - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д