2016-04-27 8 views
-2

これは他の多くの言語にも当てはまります。CのバイナリIOで何が起こっていますか?

私はここにこのコードを持っている、と私は実際に起こって、どのように私は、ファイルに書き込まれているものと解釈することができているかと思っています...

#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

ファイル内の文字の16進コードを表示するプログラムを使用してテキストファイルを開きます。テキストエディタでファイルを開くと 'Write this.'が表示されますが、エディタはヌルバイトを表示します –

+2

真剣に?あなたはASCIIを聞いたことがない? – John3136

+0

どんな種類の出力が期待されますか? – BLUEPIXY

答えて

2

char配列全体がファイルに書き込まれており、char配列は12文字に初期化され、その後にすべてゼロが続きます。だからこそ、文字列の後ろにあるすべての0が表示されます。これはおそらく、システムがバイナリファイルだと考えるようにします。文字列を書きたい場合は、代わりに以下を使用してください。

fwrite(write, sizeof(write[0]), strlen(write), fp); 
関連する問題