C言語 ファイル処理 テキストモードの読み書き

このページは、ファイル処理の流れ を読んでおくと
理解しやすくなります。


テキストモードでの読み書きについて説明します。

テキストファイルの読み込み

読み込み用ファイル:text.txt

star
123

プログラムファイル:program.c

#include <stdio.h>

void main(void) {
      FILE* fp;
      char ss[80];

      fp = fopen("text.txt", "r");

      while (fgets(ss, 256, fp)!=NULL) {
            printf("%s\n", ss);
      }

      fclose(fp);

}

読み込み用ファイル:text.txtを読み込んで、
内容を出力するプログラムです。

まず、ファイルストリームポインタを宣言します。

FILE* fp;

これは、1つのファイルを処理する上で必要なポインタです。

このポインタの中身を知る必要はありません。

続いて、ファイルを読み込み用モードでオープンしています。

fp = fopen("text.txt", "r");


第2引数は、読み込み用なので、
Readを表す r を指定しています。
(デフォルトでテキストモードとなります。)

次に実際にファイルの読み込みを行っています。

while (fgets(ss, 256, fp)!=NULL) {
      printf("%s\n", ss);
}

fgets関数は、改行までのデータを読み込み、
第1引数で指定した変数へ格納します。

第2引数は、1回で読み込む最大バイト数を指定します。

そして、ファイルから読み込むデータが無くなったら、
NULLが返されるので、
それまで繰り返して、データを読み込んで出力しています。

読み込みが終わったら最後にファイルのクローズを行っています。

fclose(fp);

テキストファイルの書き込み処理

書き込み用ファイル:text.txt

中身はカラっぽ

プログラムファイル:program.c

#include <stdio.h>

void main(void) {
      FILE* fp;
      char ss[] = "star";
      int a = 123;

      fp = fopen("text.txt", "w");

      fprintf(fp, "%s\n", ss);
      fprintf(fp, "%d\n", a);

      fclose(fp);

}

書き込み用ファイルに、
いろんなデータを書き込むプログラムです。

ファイルを書き込みモードでオープンしています。

fp = fopen("text.txt", "w");

第2引数は、書き込み用なので、Writeの w を指定しています。

次に実際に書き込みを行っています。

fprintf(fp, "%s\n", ss);
fprintf(fp, "%d\n", a);

fprintf関数は、指定したファイルへ書式指定文字列を書き込む関数です。

printf関数のファイル処理バージョンと言う感じです。

ファイルへの書き込みが終わったら、ファイルクローズして終了です。

この結果、ファイルの中身は以下のようになります。
text.txt

star 0x0A 0x0D
123 0x0A 0x0D