ファイルシステムの基本
2012年12月15日:C言語
プログラムで計算した結果をデータとして出力したい場合があります。
その方法を可能とするのがファイルシステムです。
ここでは、データをC言語で入出力する方法を紹介します。
fopen
ファイルを入力する際に使う際にはまず、fopenという命令を使います。
ファル名は開くファイルの名前をかきます。
モードは書き込むのか読み込むのかの設定です。
詳しいモードの指定は以下の表にまとめます。
モード | 意味 |
r | 読み込み用でファイルを開く |
w | 書き込み用でファイルを開く |
a | テキストファイルに追加する |
rb | 読み込み用にバイナリファイルを開く |
wb | 書き込み用にバイナリファイルを開く |
ab | バイナリファイルに追加する |
fopenは失敗するとNULLを返します。
ファイルを開く際はNULLでないことを確認しましょう。
fclose
ファイルを閉じる際はfcloseを使います。命令は以下のとおりになります。
closeに成功すると0を返し、失敗するとEOFを返します。
ファイルを書き込む
では、テキストファイルを作成するプログラムを作成します。
プログラム
#include <stdio.h> #include <stdlib.h> int main(void){ char str[50]="作成するファイルの内容です。\n"; FILE *fp; char *p; if((fp=fopen("newfile.txt","w"))==NULL){ printf("ファイルが開けません\n"); exit(1); } p=str; while(*p){ if(fputc(*p,fp)==EOF){ printf("書き込み失敗\n"); exit(1); } p++; } fclose(fp); return 0; }
解説
fopenでファイルを開きます。ファイル名はnewfile.txtとしています。
while文で、pの内容「作成するファイルの内容です。」を一文字づつ書き込んでいます。
ここで使用するのが
です。エラーが起きるとEOFを返します。EOFは負の値が返されます。
最後に、fcloseでファイルを閉じます。
プログラムを実行すると「作成するファイルの内容です。」とかかれたnewfile.txtができているので確認してみてください。
ファイルを読み込む
続いて、作成したテキストファイルを読み込んでコンソールに表示するプログラムを作成します。
プログラム
#include <stdio.h> #include <stdlib.h> int main(void){ FILE *fp; int i; if((fp=fopen("newfile.txt","r"))==NULL){ printf("ファイルが開けません\n"); exit(1); } while(1){ i=fgetc(fp); if(i==EOF)break; putchar(i); } fclose(fp); return 0; }
解説
fopenで開いて、fcloseで閉じるところは同じです。
ただ読み込む際は
を使います。この関数は、unsigned char型の値として読み込み、int型として返します。エラーの場合はEOFを返します。
putcharでコンソールへ出力しています。
実行すると先ほど作ったnewfile.txtが表示されます。
作成するファイルの内容です。
モードをかえれば、書き足すこともできるのでいろいろ試してみてください。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー