ファイル入出力 (1)

ファイルからデータを読み込んだり,ファイルに対してデータを書き出したりする方法です.
今回は1バイトづつ入出力する方法です.
 
基本的なこととして理解しておくことがあります.
それは,「ファイルに格納されているデータは1バイトづつのデータが直線的に並んでいる」
ということです.

つまりファイルからデータを読み込む際,ファイルの先頭から末尾にかけて
1バイトづつデータを取り出すという作業になります.

同様に,ファイルに対してデータを出力する際,ファイルの先頭から末尾にかけて
1バイトづつデータを書き込むことになります.

ストリームという概念
 順番にデータを入出力する対象をストリームと呼びます.
 順番にデータがもたらされる入力を「入力ストリーム」,順番にデータを書き込む形の出力を
「出力ストリーム」と呼ぶことがあります.

【ファイルから入力する例】
 ファイルから1バイトづつデータを読み込んで,それを次々と標準出力(コマンド画面)に表示するプログラムの例です.
 まず次のような内容のテキストファイル “InputFile” があると仮定します.

This is a sample text data.

このファイルから1バイトづつデータを読み込んで,それを標準出力に表示するプログラム “FileTest01.c” を次に示します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include	<stdio.h>
 
#define		TRUE		-1
#define		FALSE		0
 
int main()
{
	FILE	*fi;
	int	c;
 
	fi = fopen( "InputFile", "r" );
	if ( fi == NULL ) {
		printf("InputFile can not be opened!\n");
		return(FALSE);
	}
 
	printf("Start---\n");
	while ( TRUE ) {
		c = getc(fi);
		if ( feof(fi) ) {
			break;
		}
		putchar(c);
	}
	printf("End---\n");
 
	fclose(fi);
	return(TRUE);
}

 
【ファイルにデータを書き込む例】
 ファイルにデータを書き込む方法について紹介します.
1バイトづつデータを出力する例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include	<stdio.h>
 
#define		TRUE		-1
#define		FALSE		0
 
int main()
{
	FILE	*fo;
	int	c;
 
	fo = fopen( "OutputFile", "w" );
	if ( fo == NULL ) {
		printf("OutputFile can not be created!\n");
		return(FALSE);
	}
 
	printf("Start---\n");
	for ( c = 97; c < 123; c++ ) {
		putc(c,fo);
	}
	printf("End---\n");
 
	fclose(fo);
	return(TRUE);
}

 この例では,アルファベット小文字の ‘a’〜’z’ をファイル “OutputFile” に書き込んでいます.
 
コマンド画面に出力するようなスタイルで出力する例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include	<stdio.h>
 
#define		TRUE		-1
#define		FALSE		0
 
int main()
{
	FILE	*fo;
	int	c;
 
	fo = fopen( "OutputFile", "w" );
	if ( fo == NULL ) {
		printf("OutputFile can not be created!\n");
		return(FALSE);
	}
 
	printf("Start---\n");
	fprintf(fo,"This file is created by the program \'FileTest03.c\'.\n");
	fprintf(fo,"This is one easy way of output.\n");
	printf("End---\n");
 
	fclose(fo);
	return(TRUE);
}

このプログラムを実行すると “OutputFile” というファイルが作成され,内容は

This file is created by the program 'FileTest03.c'.
This is one easy way of output.

となります.

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)