>> C言語関数一覧トップに戻る
今回はC言語のfopen関数について説明します。
fopen関数はファイルを開きそのポインタを取得する関数です。
エラー時はNULLが返ります。
■書式
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);
第一引数にはファイル名(フルパスか実行ファイルからみた相対パス)
第二引数にはファイルモード
を指定します。
ファイルモードの種類は以下のようになっています。
読み込み、書き込み、追記書き込みと、用途を考えて使い分けます。
ファイルが存在時と存在していないときの動作に注意してください。
また、これらのモードに「rb」などのように「b」をつけると「バイナリモード」で処理します。
bをつけていないときはテキストモードと呼ばれます。
テキストモードとバイナリモードとの違いは以下のとおりです。
■テキストモード
・読み込み時に改行文字「\r\n」を「\n」に変換して読み込む
・書き込み時に改行文字「\n」を「\r\n」に変換して書き込む
・0x1a をEOF(ファイルの末端)扱いにする
■バイナリモード
・テキストモードのような変換は行わずにそのまま読み込む
・0x1a をEOF(ファイルの末端)扱いにしない。
基本的に改行文字の扱いが違うだけです。
テキストモードは上記のように変換し、バイナリモードは何も変換せずにそのまま扱うと覚えておけば良いです。
■サンプルコード
test
上記のコードは読み込み専用モードでファイルをオープンし、
fgetsで1行読み込み表示しています。
ファイルをオープンした後は、読み込み用の関数や書き込み用の関数を使っていきます。
test.txtには
test
123
456
という文字列が書き込まれているので、上記のように表示されます。
>> 【C言語 fclose 使い方】に進む
>> C言語関数一覧トップに戻る
C言語 fopen 使い方
fopen関数はファイルを開きそのポインタを取得する関数です。
エラー時はNULLが返ります。
■書式
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);
第一引数にはファイル名(フルパスか実行ファイルからみた相対パス)
第二引数にはファイルモード
を指定します。
ファイルモードの種類は以下のようになっています。
モード | 動作 | ファイル存在時の動作 | ファイルが存在しない時の動作 |
---|---|---|---|
r | 読み込み専用 | 読み込む | エラー |
w | 書き込み専用 | 上書き | 新規作成 |
a | 追記書き込み専用 | ファイルの末尾に追記 | 新規作成 |
r+ | 読み込みと書き込み | 通常の動作 | エラー |
w+ | 書き込みと読み込み | 上書き | 新規作成 |
a+ | 追記書き込みと読み込み | ファイルの末尾に追記 | 新規作成 |
ファイルが存在時と存在していないときの動作に注意してください。
また、これらのモードに「rb」などのように「b」をつけると「バイナリモード」で処理します。
bをつけていないときはテキストモードと呼ばれます。
テキストモードとバイナリモードとの違いは以下のとおりです。
■テキストモード
・読み込み時に改行文字「\r\n」を「\n」に変換して読み込む
・書き込み時に改行文字「\n」を「\r\n」に変換して書き込む
・0x1a をEOF(ファイルの末端)扱いにする
■バイナリモード
・テキストモードのような変換は行わずにそのまま読み込む
・0x1a をEOF(ファイルの末端)扱いにしない。
基本的に改行文字の扱いが違うだけです。
テキストモードは上記のように変換し、バイナリモードは何も変換せずにそのまま扱うと覚えておけば良いです。
■サンプルコード
#include <stdio.h> int main(void) { FILE *fp; char buf[50]; fp = fopen("test.txt","r"); fgets(buf,30,fp); puts(buf); fclose(fp); return 0; }■実行結果
test
上記のコードは読み込み専用モードでファイルをオープンし、
fgetsで1行読み込み表示しています。
ファイルをオープンした後は、読み込み用の関数や書き込み用の関数を使っていきます。
test.txtには
test
123
456
という文字列が書き込まれているので、上記のように表示されます。
>> 【C言語 fclose 使い方】に進む
>> C言語関数一覧トップに戻る