Что такое бинарный файл и как его создать? - PullRequest
2 голосов
/ 11 июня 2009

Я хотел бы создать двоичный файл, представляющий целое число. Я думаю, что файл должен быть 4 байта. Я использую Linux. Как это сделать? Другой вопрос: как назначить содержимое этого файла целому числу в C?

Ответы [ 4 ]

13 голосов
/ 11 июня 2009

В стандартном C fopen() позволяет режиму "wb" писать (и "rb" читать) в двоичном режиме, таким образом:

#include <stdio.h>

int main() {
    /* Create the file */
    int x = 1;
    FILE *fh = fopen ("file.bin", "wb");
    if (fh != NULL) {
        fwrite (&x, sizeof (x), 1, fh);
        fclose (fh);
    }

    /* Read the file back in */
    x = 7;
    fh = fopen ("file.bin", "rb");
    if (fh != NULL) {
        fread (&x, sizeof (x), 1, fh);
        fclose (fh);
    }

    /* Check that it worked */
    printf ("Value is: %d\n", x);

    return 0;
}

Это выводит:

Value is: 1
4 голосов
/ 11 июня 2009

С точки зрения операционной системы все файлы являются двоичными файлами. C (и C ++) предоставляют специальный «текстовый режим», который выполняет такие функции, как расширение символов новой строки до пар новой строки / возврата каретки (в Windows), но ОС не знает об этом.

В программе на Си, чтобы создать файл без этой специальной обработки, используйте флаг "b" функции fopen ():

FILE * f = fopen("somefile", "wb" );
2 голосов
/ 11 июня 2009

Открыть файл для двоичного чтения / записи. fopen использует переключатель b для параметра режима доступа к файлу - см. здесь

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

1 голос
/ 11 июня 2009

См. man для системных вызовов open, write и read.

...