Возможно ли организовать файл со структурами стандартными средствами и функциями языка? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, разобраться с файлами в Си. На Паскале очень удобно работать с файлами своего типа, такими как структура. Например,
f : file of person;
, где
person = record
name : string[15];
age : integer;
end;
В этом случае процедуры чтения/записи позволяют записывать/считавать стуктурную переменную целиком:
var a : person;
.....
Write(f, a);
Read(f, a);
Возможно ли на С(С++) организовать файл со структурами стандартными средствами и функциями языка?

Решение задачи: «Возможно ли организовать файл со структурами стандартными средствами и функциями языка?»

textual
Листинг программы
    MyStruct s;  /* структура*/
  
    FILE *in = fopen("myfile.dat", "rb");   /*Открываем файл для чтения в двоичном режиме (r - read, b - binary)*/
  while (1) {
     if (fread(&s, sizeof(MyStruct), 1, in)<1) break;  /*Читаем данные из файла в массив*/
         /*Печатаем данные*/
     printf("%d %f  %s\n", s.a, s.b, s.c);
  }
    fclose(in);     /*Закрываем файл*/

Объяснение кода листинга программы

  1. Объявляется структура MyStruct s;
  2. Открывается файл myfile.dat для чтения в двоичном режиме
  3. Запускается бесконечный цикл while (1)
  4. В каждой итерации цикла читаются данные из файла в структуру s с помощью функции fread(&s, sizeof(MyStruct), 1, in)
  5. Если чтение данных из файла успешно, выводятся данные структуры s с помощью функции printf(%d %f  %s\n, s.a, s.b, s.c)
  6. Если чтение данных из файла не удалось (например, достигнут конец файла), цикл прерывается
  7. Закрывается файл с помощью функции fclose(in)

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы