C言語 - ファイル操作1

TOPプログラムの話>C言語

ファイル操作の基本は

  1. fopen()を使ってファイルを開き、ファイルポインタを取得
  2. ファイル操作用関数を使う
  3. fclose()を使ってファイルを閉じる

この3つです。
ファイル操作用関数の使い所とエラー処理を状況に応じて加えていきます。
ファイル操作用関数はいくつか種類があり、それら全ての関数はfopenによって開いたファイルポインタを使わない限り失敗します。(stdoutなど例外もありますが)

では実際のプログラムソースを見てみましょう。


/////////////サンプル1//////////////////////////////////

#include <stdio.h>

int main()
{
	FILE *fp;/*ファイルポインタ*/
	int years=2004;

	fp = fopen("test.txt","w");	/*ファイルを開きます。*/
	if(fp==NULL)/*エラー処理*/
	{
		printf("ファイルが読み込めません。\n");
		return 0;
	}
	fprintf(fp,"Hello Densanbu\n");/*ファイルに書き込みます。*/
	fprintf(fp,"%d年\n",years);
	fclose(fp);	/*ファイルを閉じます。*/

	return 0;
}
///////////////////////////////////////////////////////

コンパイルして実行しても何も変化が見られませんね?
けど、ソースファルがあるフォルダを開いてみてください。
"text.txt"とというファイルを開くと


Hello Densanbu
2004年

と書き込まれていれば成功です。

始めのFILE *fpですが、これはファイルポインタ(FILE構造体のポインタ)で、 これを使ってファイル操作をします。

次にfopen()ですが、次のようになっています。

FILE *fopen(const char *ファイル名,const char *オープンモード)

一つ目の引数:
ファイル名は""で括ったファイル名でもいいですし、char型の配列にファイル名を入れたものでもいいです。

二つ目の引数:
オープンモードですが、次の表を参考にしてください。

処理モードファイルがある場合ファイルがない場合
読み出しr×
書き込みw○上書きする。○新規作成
追記a○新規作成
読み書きr+×
読み書きw+○上書きする。○新規作成

(○→開ける、×→開けない)

読み出しモードで開かれたファイルはfscanfやfreadなどのファイルに読み込む関数は使えますが、書き込む関数は使えません。
逆に書き込み・追記モードではfprintfやfwriteなどファイルに書き込める関数は使えますが、読み込む関数は使えません。
そして読み書きモードでは両方できます。
通常は[rで読み込み、wで書き込み]この二つさえ知っておけば十分です。
サンプル1ではオープンモードにw、つまり書き込みモードで開いていますね。
このfopenの戻り値が、ファイルポインタになるのでfpに格納しておきます。
開けなかった場合NULLが返るため、if(fp==NULL)でチェックしておきます。
もっとも、wで開いた場合そのようなことはめったにないと思われます。

次にファイル操作用の関数としてfprintfを使っています。
この関数はprintfとほとんど同じ使い方ができるので大変便利です。
一番目の引数がファイルポインタなだけで他はprintfと同じです。
念のため、fprintfの説明も用意しておくのでよかったらみてください。

最後にfcloseで使ったファイルを閉じます。

2ページへ
INDEX        
TOPプログラムの話>C言語