Возможно ли организовать файл со структурами стандартными средствами и функциями языка? - 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); /*Закрываем файл*/
Объяснение кода листинга программы
- Объявляется структура
MyStruct s;
- Открывается файл
myfile.dat
для чтения в двоичном режиме - Запускается бесконечный цикл while (1)
- В каждой итерации цикла читаются данные из файла в структуру
s
с помощью функцииfread(&s, sizeof(MyStruct), 1, in)
- Если чтение данных из файла успешно, выводятся данные структуры
s
с помощью функцииprintf(
%d %f %s\n, s.a, s.b, s.c)
- Если чтение данных из файла не удалось (например, достигнут конец файла), цикл прерывается
- Закрывается файл с помощью функции
fclose(in)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д