Запись структуры в файл - C (СИ) (77554)

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

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

есть структура
struct base
{
 int id;
 char name[10];
};
typedef struct base office;
функция для записи в файл
void writes(FILE* file,office of)
 {
 fwrite(&of.id, sizeof(int), 1, file);
 fwrite(&of.name, sizeof(char)*10, 1, file);
}
функция чтения из файла
 void reads(FILE* file,office* of)
 {
  fread(&(of->id), sizeof(int), 1, file);
  fread(&(of->name), sizeof(char)*10, 1, file);
}
функция записывает в файл рандомную информацию
void gen(char* file)
{
office off;
FILE* fl = fopen(file,"wb");
char rb[3][10] = {"qqq","www","eee"};
for(int i = 0;i<10;i++)
 {
  off.id = random()%100;
  strcpy(off.name,rb[random()%3]);
  writes(fl,off);
 }
fclose(file);
функция печатает структуру
void pOff(office of)
{
 printf("%d %s\n",of.i,of.name);
}
чтение из файла
FILE* f = fopen("data.sq","rb");
office of2;
for(int i=0;i<10;i++)
{
 reads(f,&of2);
 pOff(of2);
}
проблема такая, если запущу генерацию файла даже несколько раз, то поле name не поменяется, уверен что ошибка изза работы с памятью, помогите найти

Решение задачи: «Запись структуры в файл»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    size_t i;
 
    srandom((unsigned) time(NULL));
    
    for(i = 0; i < 5; ++i)
    printf("%d\n", random() % 15);
    
    exit(0);
}

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

  1. Подключение необходимых библиотек: iostream.h, stdlib.h, time.h
  2. Объявление переменной i типа size_t
  3. Инициализация генератора случайных чисел с помощью функции srandom() и аргументом которой является текущее время
  4. Запуск цикла for от 0 до 5
  5. Внутри цикла вызов функции printf() для вывода на экран случайного числа от 0 до 14
  6. Завершение цикла
  7. Выход из программы с помощью функции exit() и аргументом которой является 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

15   голосов , оценка 4.067 из 5