C言語を学習しています。で、少し気になったというか興味
がわいたことがありまして、それは、C言語で数値や文字を
ファイルに保存するのですが、アスキーモードで保存した
時は、保存したファイルを開いても中身が保存したときと、
同じで読めるのですが、バイナリモードで保存したときは、
保存したファイルを開いても、変な文字になっているのです。
例えば下記にC言語のソースを載せます。
c
1#include <stdio.h> 2#include <stdlib.h> 3 4int main(void) 5{ 6 FILE *fp; 7 int i; 8 int i2 = 0; 9 10 /* 書き込みのためにファイルを開く */ 11 if((fp = fopen("myfile", "wb"))==NULL) { 12 printf("ファイルを開くことができません\n"); 13 exit(1); 14 } 15 16 i = 10; 17 18 if(fwrite(&i, 2, 1, fp) != 1){ 19 printf("書き込みエラーが起こりました\n"); 20 exit(1); 21 } 22 fclose(fp); 23 24 /* 読み込みのためにファイルを開く */ 25 if((fp = fopen("myfile", "rb"))==NULL) { 26 printf("ファイルを開くことができません2\n"); 27 exit(1); 28 } 29 30 if(fread(&i2, 2, 1, fp) != 1) { 31 printf("読み込みエラーが起こりました\n"); 32 exit(1); 33 } 34 printf("i2は %d です", i2); 35 fclose(fp); 36 37 return 0; 38}
で、結果は
i2は 10 です
と、表示されます。
しかし、ファイルを(myfile)開いてみると、改行と半角
スペースがあるだけです。さらに i の値を1000にして
実行してみて、ファイルを秀丸エディタのバイナリモード
で開いてみると
E8,03,
という記述になっています。
そこで思ったのですがこれはどういう理屈で
E8,03,になったのだろうかと少し気になりましたので
質問させていただきました。
どなたかお分かりの方がいれば教えてもらえればと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/03 14:55 編集