Как записать, а после прочитать из бинарного файла структуру?

Для записи и чтения структуры из бинарного файла в языке программирования C, вы можете использовать функции fwrite() и fread() соответственно.

Давайте представим, что у нас есть следующая структура в языке C:

typedef struct {
    int id;
    char name[20];
    float salary;
} Employee;

Теперь давайте создадим функцию, которая будет записывать структуру Employee в бинарный файл:

void writeEmployeeToFile(Employee employee, const char* filename) {
    FILE* file = fopen(filename, "wb");  // Открытие файла в режиме бинарной записи

    if (file == NULL) {
        printf("Ошибка при открытии файла.n");
        return;
    }

    fwrite(&employee, sizeof(Employee), 1, file);  // Записываем структуру в файл

    fclose(file);  // Закрываем файл
}

Функция fwrite() принимает указатель на блок памяти, который нужно записать в файл (&employee в данном случае), размер каждого элемента (sizeof(Employee) в данном случае), количество элементов для записи (1 в данном случае) и указатель на файл, в который нужно осуществить запись (file в данном случае).

Теперь давайте создадим функцию, которая будет читать структуру Employee из бинарного файла:

Employee readEmployeeFromFile(const char* filename) {
    FILE* file = fopen(filename, "rb");  // Открытие файла в режиме бинарного чтения

    if (file == NULL) {
        printf("Ошибка при открытии файла.n");
        return;
    }

    Employee employee;

    fread(&employee, sizeof(Employee), 1, file);  // Читаем структуру из файла

    fclose(file);  // Закрываем файл

    return employee;
}

Функция fread() работает аналогично функции fwrite(), но в данном случае мы передаем указатель на структуру, в которую должны быть прочитаны данные (&employee в данном случае), размер каждого элемента (sizeof(Employee) в данном случае), количество элементов для чтения (1 в данном случае) и указатель на файл, из которого нужно читать (file в данном случае).

С использованием этих двух функций вы можете записывать и читать структуры из бинарных файлов в языке C.