ファイル/バイナリファイルの書き込みと読み込み・fopen,fwrite,fread
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* バイナリファイルの書き込みと読み込み・fopen,fwrite,frea...
C言語によるバイナリファイルの読み込みおよび書き込みのサン...
サンプルコードの内容は、構造体の内容をファイルに出力する...
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
* 関連記事 [#i7e40fc7]
-[[テキストファイルを行単位で読み込む・fgets>ファイル/テ...
-[[ディレクトリかどうか判別する・stat>ファイル/ディレクト...
-[[指定したディレクトリのファイル一覧を取得する・opendir,...
-[[ファイルのサイズを取得する>ファイル/ファイルのサイズを...
-[[ファイルのユーザIDとグループIDを取得する>ファイル/ファ...
-[[fopenのファイルモード一覧表>ファイル/fopenのファイルモ...
-[[バイナリファイルの書き込みと読み込み・fopen,fwrite,fre...
* 共通ヘッダーファイル [#i7315575]
書き込み、読み込みのサンプルコードで使用するヘッダーファ...
&ref(pkt.h); (改行コードLF)
#ifndef __PKT_H__
#define __PKT_H__
struct PKT {
int a;
int b;
int c;
};
#endif
* バイナリファイルの書き込みサンプルコード [#tbffb0a1]
バイナリファイルの書き込みサンプルコードは以下の通りです。
&ref(bin-write.c); (改行コードLF)
サンプルコードは、構造体に値をセットしファイルに出力して...
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "pkt.h"
int main(void)
{
int i;
struct PKT pkt[3];
FILE *fp = NULL;
pkt[0].a = 1; pkt[0].b = 2; pkt[0].c = 3;
pkt[1].a = 10; pkt[1].b = 20; pkt[1].c = 30;
pkt[2].a = 100; pkt[2].b = 200; pkt[2].c = 300;
for(i=0; i<3; i++) {
printf("pkt[%d].a = %d\n", i, pkt[i].a);
printf("pkt[%d].b = %d\n", i, pkt[i].b);
printf("pkt[%d].c = %d\n", i, pkt[i].c);
}
fp = fopen("data.dat", "wb");
if (fp == NULL) {
perror("fopen() error!");
exit(EXIT_FAILURE);
}
/* output to data.dat file */
if (fwrite(&pkt, sizeof(pkt), 1, fp) != 1) {
perror("fwrite() error!");
fclose(fp);
exit(EXIT_FAILURE);
}
/* file close */
if (fp != NULL) {
fclose(fp);
fp = NULL;
}
return 0;
}
* バイナリファイルの読み込みサンプルコード [#ofd10f1e]
バイナリファイルの読み込みサンプルコードは以下の通りです。
&ref(bin-read.c); (改行コードLF)
サンプルコードは上記のbin-write.cで出力されたバイナリファ...
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "pkt.h"
int main(void)
{
int i;
struct PKT pkt[3];
FILE *fp = NULL;
fp = fopen("data.dat", "rb");
if (fp == NULL) {
perror("fopen() error!");
exit(EXIT_FAILURE);
}
if (fread(&pkt, sizeof(pkt), 1, fp) != 1) {
perror("fwrite() error!");
fclose(fp);
exit(EXIT_FAILURE);
}
if (fp != NULL) {
fclose(fp);
fp = NULL;
}
for(i=0; i<3; i++) {
printf("pkt[%d].a = %d\n", i, pkt[i].a);
printf("pkt[%d].b = %d\n", i, pkt[i].b);
printf("pkt[%d].c = %d\n", i, pkt[i].c);
}
return 0;
}
* ファイルの書き込み読み込みの実行結果 [#hd91affd]
以下のように2つのCサンプルコードをコンパイルし実行した結...
$ gcc bin-write.c -o bin-write
$ ./bin-write
pkt[0].a = 1
pkt[0].b = 2
pkt[0].c = 3
pkt[1].a = 10
pkt[1].b = 20
pkt[1].c = 30
pkt[2].a = 100
pkt[2].b = 200
pkt[2].c = 300
上記によりdata.datが作成されています。~
またhexdumpコマンドで内容を確認してみます。
$ ls -l data.dat
-rw-r--r-- 1 sakura sakura 36 8月 10 22:36 data.dat
$ hexdump -C data.dat
00000000 01 00 00 00 02 00 00 00 03 00 00 00 0a 00 00 ...
00000010 14 00 00 00 1e 00 00 00 64 00 00 00 c8 00 00 ...
00000020 2c 01 00 00 ...
00000024
次に読み込みのCサンプルコードをコンパイルし実行します。~
構造体に内容がセットされているのが確認できます。
$ gcc bin-read.c -o bin-read
$ ./bin-read
pkt[0].a = 1
pkt[0].b = 2
pkt[0].c = 3
pkt[1].a = 10
pkt[1].b = 20
pkt[1].c = 30
pkt[2].a = 100
pkt[2].b = 200
pkt[2].c = 300
以上、C言語によるバイナリファイルの書き込みと読み込みのC...
#htmlinsertpcsp(c-btm.html,c-sp.html)
終了行:
#navi(../)
* バイナリファイルの書き込みと読み込み・fopen,fwrite,frea...
C言語によるバイナリファイルの読み込みおよび書き込みのサン...
サンプルコードの内容は、構造体の内容をファイルに出力する...
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
* 関連記事 [#i7e40fc7]
-[[テキストファイルを行単位で読み込む・fgets>ファイル/テ...
-[[ディレクトリかどうか判別する・stat>ファイル/ディレクト...
-[[指定したディレクトリのファイル一覧を取得する・opendir,...
-[[ファイルのサイズを取得する>ファイル/ファイルのサイズを...
-[[ファイルのユーザIDとグループIDを取得する>ファイル/ファ...
-[[fopenのファイルモード一覧表>ファイル/fopenのファイルモ...
-[[バイナリファイルの書き込みと読み込み・fopen,fwrite,fre...
* 共通ヘッダーファイル [#i7315575]
書き込み、読み込みのサンプルコードで使用するヘッダーファ...
&ref(pkt.h); (改行コードLF)
#ifndef __PKT_H__
#define __PKT_H__
struct PKT {
int a;
int b;
int c;
};
#endif
* バイナリファイルの書き込みサンプルコード [#tbffb0a1]
バイナリファイルの書き込みサンプルコードは以下の通りです。
&ref(bin-write.c); (改行コードLF)
サンプルコードは、構造体に値をセットしファイルに出力して...
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "pkt.h"
int main(void)
{
int i;
struct PKT pkt[3];
FILE *fp = NULL;
pkt[0].a = 1; pkt[0].b = 2; pkt[0].c = 3;
pkt[1].a = 10; pkt[1].b = 20; pkt[1].c = 30;
pkt[2].a = 100; pkt[2].b = 200; pkt[2].c = 300;
for(i=0; i<3; i++) {
printf("pkt[%d].a = %d\n", i, pkt[i].a);
printf("pkt[%d].b = %d\n", i, pkt[i].b);
printf("pkt[%d].c = %d\n", i, pkt[i].c);
}
fp = fopen("data.dat", "wb");
if (fp == NULL) {
perror("fopen() error!");
exit(EXIT_FAILURE);
}
/* output to data.dat file */
if (fwrite(&pkt, sizeof(pkt), 1, fp) != 1) {
perror("fwrite() error!");
fclose(fp);
exit(EXIT_FAILURE);
}
/* file close */
if (fp != NULL) {
fclose(fp);
fp = NULL;
}
return 0;
}
* バイナリファイルの読み込みサンプルコード [#ofd10f1e]
バイナリファイルの読み込みサンプルコードは以下の通りです。
&ref(bin-read.c); (改行コードLF)
サンプルコードは上記のbin-write.cで出力されたバイナリファ...
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "pkt.h"
int main(void)
{
int i;
struct PKT pkt[3];
FILE *fp = NULL;
fp = fopen("data.dat", "rb");
if (fp == NULL) {
perror("fopen() error!");
exit(EXIT_FAILURE);
}
if (fread(&pkt, sizeof(pkt), 1, fp) != 1) {
perror("fwrite() error!");
fclose(fp);
exit(EXIT_FAILURE);
}
if (fp != NULL) {
fclose(fp);
fp = NULL;
}
for(i=0; i<3; i++) {
printf("pkt[%d].a = %d\n", i, pkt[i].a);
printf("pkt[%d].b = %d\n", i, pkt[i].b);
printf("pkt[%d].c = %d\n", i, pkt[i].c);
}
return 0;
}
* ファイルの書き込み読み込みの実行結果 [#hd91affd]
以下のように2つのCサンプルコードをコンパイルし実行した結...
$ gcc bin-write.c -o bin-write
$ ./bin-write
pkt[0].a = 1
pkt[0].b = 2
pkt[0].c = 3
pkt[1].a = 10
pkt[1].b = 20
pkt[1].c = 30
pkt[2].a = 100
pkt[2].b = 200
pkt[2].c = 300
上記によりdata.datが作成されています。~
またhexdumpコマンドで内容を確認してみます。
$ ls -l data.dat
-rw-r--r-- 1 sakura sakura 36 8月 10 22:36 data.dat
$ hexdump -C data.dat
00000000 01 00 00 00 02 00 00 00 03 00 00 00 0a 00 00 ...
00000010 14 00 00 00 1e 00 00 00 64 00 00 00 c8 00 00 ...
00000020 2c 01 00 00 ...
00000024
次に読み込みのCサンプルコードをコンパイルし実行します。~
構造体に内容がセットされているのが確認できます。
$ gcc bin-read.c -o bin-read
$ ./bin-read
pkt[0].a = 1
pkt[0].b = 2
pkt[0].c = 3
pkt[1].a = 10
pkt[1].b = 20
pkt[1].c = 30
pkt[2].a = 100
pkt[2].b = 200
pkt[2].c = 300
以上、C言語によるバイナリファイルの書き込みと読み込みのC...
#htmlinsertpcsp(c-btm.html,c-sp.html)
ページ名: