2016-04-27 2 views
-2

Я предполагаю, что это относится ко многим другим языкам.Что происходит в двоичном IO в C?

У меня есть этот код здесь, и мне интересно, что на самом деле происходит, и как я могу интерпретировать то, что написано в файле ...

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main() 
{ 
    //Initialize a variable and load it with input using scanf 
    char write[100] = "Write this."; 

    FILE *fp = fopen("./binFile.txt", "w+"); 
    fwrite(write, sizeof(write[0]), sizeof(write)/sizeof(write[0]), fp); 
    fclose(fp); 
} 

, а затем, когда я открываю текстовый файл я вижу это ...

5772 6974 6520 7468 6973 2e00 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 

Но у меня есть некоторые проблемы с тем, что происходит здесь. Как этот текст разбивается на двоичный?

+0

Вы открываете текстовый файл, используя программу, которая отображает шестнадцатеричные коды символов в файле. '57' означает' W', '72' означает' r' и т. Д. Если вы откроете файл в текстовом редакторе, вы должны увидеть 'Write this.', за которым следует, однако, что редактор отображает нулевые байты –

+2

Серьезно? вы никогда не слышали об ASCII? – John3136

+0

Ожидаете ли вы какой-либо выход? – BLUEPIXY

ответ

2

Вы записываете весь массив символов в файл, а массив символов инициализируется 12 символами, за которым следуют все нулевые значения. Вот почему вы видите все нули после строки, возможно, это заставляет вашу систему думать, что это двоичный файл. Поэтому используйте следующую команду, если вы хотите написать строку:

fwrite(write, sizeof(write[0]), strlen(write), fp); 
Смежные вопросы