// バイナリファイルの読み書きサンプル
// 1.バイナリファイルを読み込み
// 2.ダンプ風に標準出力に出力
// 3.バイナリファイルとしてそのまま別のファイルに出力
// ポイント1.ファイルをオープンする時のオプションはrb wbとbを付けます
// ポイント2.freadで読み込みます。
// パラメータは1.読込バッファ 2.読み込むサイズ 3.読み込む個数 4.ファイルポインタ
// サンプルはchar型(1byte)を512個の指定です。
// ポイント3.fwriteで書き込みます。
// パラメータは1.バッファのポインタ 2.書き込むサイズ 3.書き込む個数 4.ファイルポインタ
// 書き込みの個数は、読み込んだバイト数をそのまま使います。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
// ファイルポインタ
FILE *fpr, *fpw;
// 読込サイズを保存する変数
int s;
// ループカウンタ
int i;
// 読込バッファ
char buff[512]; // ※8の倍数にしないとダンプ風出力が面倒かも
// ダンプ風標準出力用
char str[17] = "0123456789ABCDEF";
// ポイント1.ファイルをオープンする時のオプションはrb wbとbを付ける
fpr
= fopen("logo3w.png", "rb"); fpw
= fopen("copy.png", "wb"); if (fpr == NULL ) {
return EXIT_FAILURE;
}
// ポイント2.freadで読み込みます。
// パラメータは1.読込バッファ 2.読み込むサイズ 3.読み込む個数 4.ファイルポインタ
// サンプルはchar型(1byte)を512個の指定です。
while ((s
= fread(buff
, sizeof(char), sizeof(buff
), fpr
)) != 0) { // 2.ダンプ風に標準出力に出力
for (i = 0; i < s; i++) {
// 上位4ビットをcharの0~Fに変換
printf("%c", str
[buff
[i
] / 16 & 15]); // 下位4ビットをcharの0~Fに変換
printf("%c ", str
[buff
[i
] & 15]);
if (i % 8 == 7) {
// 8バイト毎に改行
}
}
// ポイント3.fwriteで書き込みます。
// パラメータは1.バッファのポインタ 2.書き込むサイズ 3.書き込む個数 4.ファイルポインタ
// 書き込みの個数は、読み込んだバイト数をそのまま使います。
// 3.バイナリファイルとしてそのまま別のファイルに出力
fwrite(buff
, sizeof(char), s
, fpw
); }
// ファイルクローズ
return EXIT_SUCCESS;
}
Ly8g44OQ44Kk44OK44Oq44OV44Kh44Kk44Or44Gu6Kqt44G/5pu444GN44K144Oz44OX44OrCi8vIO+8kS7jg5DjgqTjg4rjg6rjg5XjgqHjgqTjg6vjgpLoqq3jgb/ovrzjgb8KLy8g77yS77yO44OA44Oz44OX6aKo44Gr5qiZ5rqW5Ye65Yqb44Gr5Ye65YqbCi8vIO+8k++8juODkOOCpOODiuODquODleOCoeOCpOODq+OBqOOBl+OBpuOBneOBruOBvuOBvuWIpeOBruODleOCoeOCpOODq+OBq+WHuuWKmwoKLy8g44Od44Kk44Oz44OI77yR77yO44OV44Kh44Kk44Or44KS44Kq44O844OX44Oz44GZ44KL5pmC44Gu44Kq44OX44K344On44Oz44GvcmIgd2Ljgahi44KS5LuY44GR44G+44GZCgovLyDjg53jgqTjg7Pjg4jvvJLvvI5mcmVhZOOBp+iqreOBv+i+vOOBv+OBvuOBmeOAggovLyDjg5Hjg6njg6Hjg7zjgr/jga/vvJHvvI7oqq3ovrzjg5Djg4Pjg5XjgqHjgIDvvJLvvI7oqq3jgb/ovrzjgoDjgrXjgqTjgrrjgIDvvJPvvI7oqq3jgb/ovrzjgoDlgIvmlbDjgIDvvJTvvI7jg5XjgqHjgqTjg6vjg53jgqTjg7Pjgr8KLy8g44K144Oz44OX44Or44GvY2hhcuWeiygxYnl0ZSnjgpI1MTLlgIvjga7mjIflrprjgafjgZnjgIIKCi8vIOODneOCpOODs+ODiO+8k++8jmZ3cml0ZeOBp+abuOOBjei+vOOBv+OBvuOBmeOAggovLyDjg5Hjg6njg6Hjg7zjgr/jga/vvJHvvI7jg5Djg4Pjg5XjgqHjga7jg53jgqTjg7Pjgr/jgIDvvJLvvI7mm7jjgY3ovrzjgoDjgrXjgqTjgrrjgIDvvJPvvI7mm7jjgY3ovrzjgoDlgIvmlbDjgIDvvJTvvI7jg5XjgqHjgqTjg6vjg53jgqTjg7Pjgr8KLy8g5pu444GN6L6844G/44Gu5YCL5pWw44Gv44CB6Kqt44G/6L6844KT44Gg44OQ44Kk44OI5pWw44KS44Gd44Gu44G+44G+5L2/44GE44G+44GZ44CCCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgppbnQgbWFpbih2b2lkKSB7CgkvLyDjg5XjgqHjgqTjg6vjg53jgqTjg7Pjgr8KCUZJTEUgKmZwciwgKmZwdzsKCS8vIOiqrei+vOOCteOCpOOCuuOCkuS/neWtmOOBmeOCi+WkieaVsAoJaW50IHM7CgkvLyDjg6vjg7zjg5fjgqvjgqbjg7Pjgr8KCWludCBpOwoKCS8vIOiqrei+vOODkOODg+ODleOCoQoJY2hhciBidWZmWzUxMl07IC8vIOKAuzjjga7lgI3mlbDjgavjgZfjgarjgYTjgajjg4Djg7Pjg5fpoqjlh7rlipvjgYzpnaLlgJLjgYvjgoIKCgkvLyDjg4Djg7Pjg5fpoqjmqJnmupblh7rlipvnlKgKCWNoYXIgc3RyWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKCgkvLyDjg53jgqTjg7Pjg4jvvJHvvI7jg5XjgqHjgqTjg6vjgpLjgqrjg7zjg5fjg7PjgZnjgovmmYLjga7jgqrjg5fjgrfjg6fjg7Pjga9yYiB3YuOBqGLjgpLku5jjgZHjgosKCWZwciA9IGZvcGVuKCJsb2dvM3cucG5nIiwgInJiIik7CglmcHcgPSBmb3BlbigiY29weS5wbmciLCAid2IiKTsKCWlmIChmcHIgPT0gTlVMTCApIHsKCQlwdXRzKCLjg5XjgqHjgqTjg6vjgYzjgarjgYTjgojvvIEiKTsKCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwoJfQoKCS8vIOODneOCpOODs+ODiO+8ku+8jmZyZWFk44Gn6Kqt44G/6L6844G/44G+44GZ44CCCgkvLyDjg5Hjg6njg6Hjg7zjgr/jga/vvJHvvI7oqq3ovrzjg5Djg4Pjg5XjgqHjgIDvvJLvvI7oqq3jgb/ovrzjgoDjgrXjgqTjgrrjgIDvvJPvvI7oqq3jgb/ovrzjgoDlgIvmlbDjgIDvvJTvvI7jg5XjgqHjgqTjg6vjg53jgqTjg7Pjgr8KCS8vIOOCteODs+ODl+ODq+OBr2NoYXLlnosoMWJ5dGUp44KSNTEy5YCL44Gu5oyH5a6a44Gn44GZ44CCCgl3aGlsZSAoKHMgPSBmcmVhZChidWZmLCBzaXplb2YoY2hhciksIHNpemVvZihidWZmKSwgZnByKSkgIT0gMCkgewoJCS8vIO+8ku+8juODgOODs+ODl+miqOOBq+aomea6luWHuuWKm+OBq+WHuuWKmwoJCWZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHsKCQkJLy8g5LiK5L2NNOODk+ODg+ODiOOCkmNoYXLjga4w772eRuOBq+WkieaPmwoJCQlwcmludGYoIiVjIiwgc3RyW2J1ZmZbaV0gLyAxNiAmIDE1XSk7CgkJCS8vIOS4i+S9jTTjg5Pjg4Pjg4jjgpJjaGFy44GuMO+9nkbjgavlpInmj5sKCQkJcHJpbnRmKCIlYyAiLCBzdHJbYnVmZltpXSAmIDE1XSk7CgoJCQlpZiAoaSAlIDggPT0gNykgewoJCQkJLy8gOOODkOOCpOODiOavjuOBq+aUueihjAoJCQkJcHJpbnRmKCJcbiIpOwoJCQl9CgkJfQoKCQkvLyDjg53jgqTjg7Pjg4jvvJPvvI5md3JpdGXjgafmm7jjgY3ovrzjgb/jgb7jgZnjgIIKCQkvLyDjg5Hjg6njg6Hjg7zjgr/jga/vvJHvvI7jg5Djg4Pjg5XjgqHjga7jg53jgqTjg7Pjgr/jgIDvvJLvvI7mm7jjgY3ovrzjgoDjgrXjgqTjgrrjgIDvvJPvvI7mm7jjgY3ovrzjgoDlgIvmlbDjgIDvvJTvvI7jg5XjgqHjgqTjg6vjg53jgqTjg7Pjgr8KCQkvLyDmm7jjgY3ovrzjgb/jga7lgIvmlbDjga/jgIHoqq3jgb/ovrzjgpPjgaDjg5DjgqTjg4jmlbDjgpLjgZ3jga7jgb7jgb7kvb/jgYTjgb7jgZnjgIIKCQkvLyDvvJPvvI7jg5DjgqTjg4rjg6rjg5XjgqHjgqTjg6vjgajjgZfjgabjgZ3jga7jgb7jgb7liKXjga7jg5XjgqHjgqTjg6vjgavlh7rlipsKCQlmd3JpdGUoYnVmZiwgc2l6ZW9mKGNoYXIpLCBzLCBmcHcpOwoJfQoKCS8vIOODleOCoeOCpOODq+OCr+ODreODvOOCugoJZmNsb3NlKGZwcik7CglmY2xvc2UoZnB3KTsKCXJldHVybiBFWElUX1NVQ0NFU1M7Cn0K