Неправильный вывод при записи в файл в двоичном формате - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь записать пользовательский ввод в файл в двоичном формате.Когда я смотрю на файл, я ожидаю увидеть только 0 и 1, но вывод в файл печатается в обычном тексте:

    FILE *f;
    char array[8];
    f = fopen("numbers.bin", "ab+");
    if(f==NULL){
        printf("Could not open file!\n");
        system("pause");
        exit(1);
        }

     for(i=0;i<numberOfInputs;i++){
         printf("\nEnter number nr %i:", i+1);
         gets(array); //get the input and place it in array
         strcat(array, "\n"); // add a newline to the input
         fwrite(array,sizeof(char),1,f); //write output to the file
}

Кто-нибудь может определить, что я делаю здесь неправильно?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

, поскольку вы читаете ввод как строку (gets), данные записываются позже. Вам нужно использовать scanf для чтения чисел.

int num;
scanf("%d", &num);
fwrite(&num, sizeof(int), 1, f);
1 голос
/ 09 марта 2012

Вы пишете только один символ.

Попробуйте ...

fwrite(array,strlen(array),1,f);

Эти документы показывают, что вторым параметром является размер элемента длянапишите, а третье количество предметов.Вы можете поместить эти два в другую или вместо sizeof(char) вместо 1 (это всегда один).

Остерегайтесь, что у вас возникнет проблема, если пользователь введет строку длиннее 6 символов- поскольку символ новой строки и нулевой терминатор также занимают память.

...