C言語を使っていくうえで、より大量に、より長期間情報を保存したいというときには、ファイルを使用する必要があります。

本記事ではファイルに関しての超基本を解説していきます。

目次

ファイルを操作する基本手順

C言語でファイルを操作するときには、次の手順を必ず踏む必要があります。

ファイルをオープンする

ファイルを読み書き

ファイルをクローズする

ファイルを使う際には、初めに「オープン」する必要があり、操作が終わったら必ず「クローズ」する必要があるのです。

なぜクローズする必要があるのか

それは、メモリへの負担を減らすのが主な目的です。

本記事で扱うような簡単なプログラムを組む場合では、メモリの容量や負荷などは全く考慮する必要がないです。

ですが、ファイルの容量が大きくなってくると、そういうところまで気にしていないと、「メモリが足りない」などが原因で、プログラムが重くなるなどの問題を引き起こすことがあります。

クローズせずにプログラムを実行してしまった。
パソコンのメモリは大丈夫なの!?

安心して下さい。

最近のOSやソフトウェアは優秀なので、プログラムの実行が終われば自動的にメモリを解放してくれます。

ちょっとのミスでパソコンが重くなってしまうなどの問題はそうそう起きませんので、安心してプログラムを続けてください。

基本手順とその説明はこんな感じです。次に具体的な手順とコードの解説をしていきます。

ファイルを作成する具体的な手順

まず、
「ファイルを作成して(オープンして)、ファイルを読み込んだことが確認出来たら、ファイルをクローズする」

というプログラムを書いてみます。

こちらのコードが見本となります。

#include <stdio.h>
int main(void)
{
  FILE *fp ;
fp= fopen(“test1.txt”, “w”) ;
if ( fp == NULL ){
printf(“ファイルをオープンできませんでした。¥n”) ;
      return 1 ;
    }else{
        printf(“ファイルをオープンしました。¥n”) ;
    }
    fclose(fp) ;
    printf(“ファイルをクローズしました。¥n”) ;
    return 0 ;
}

ここから、コード一つ一つを解説します。

FILE *fp ;

これは、ファイルポインタと呼ばれ、ファイルを指すポインタを格納する変数を宣言しています。

簡単に、「ファイルを指すもの」と覚えてもいいかもしれません。(最初のうちはね)

ポインタについてわからない方はこちら!
>【C言語】”ポインタの超基本”を例を交えて分かりやすく解説!

fp= fopen(“test1.txt”, “w”) ;

この文では、「fopen」というものを用いて、ファイルをオープンしています。

「test1.txt」はファイル名を指し、「w」は オープンモードを指定しています。

オープンモードについては、その他単語や用語まとめで解説しています。

「test1.txt」というファイル名が見つからない場合、同名のファイルをプログラムと同じフォルダー内に作成します

そして、作成オープンしたファイルのポインタをファイルポインタ「fp」に代入します。

if ( fp == NULL ){
printf(“ファイルをオープンできませんでした。¥n”) ;
      return 1 ;
    }else{
        printf(“ファイルをオープンしました。¥n”) ;
    }

このプログラムでは if文 を用いて、ファイルをオープンできたのかどうかを判別します。

fp(ファイル) == NULL(なにもない)

「NULL」というのは、何もないという意味を表します。

fp==NULLですから、ファイルのポインタを格納するはずの変数に何も入っていない時、つまり、ファイルをオープンできなかったことを表します。

その時には return 1 をして、プログラムを終了させます。
(return 1 はmain関数において異常終了を表します)

そして「else」、ファイルがオープンされていたとき
「ファイルをオープンしました」
というメッセージをだし、次のプログラムに移ります。

fclose(fp) ;
    printf(“ファイルをクローズしました。¥n”) ;

この文では「fclose」を用いて、ファイルをクローズしています。

そのあとに、「ファイルをクローズしました。」というメッセージを出力します。

自分のパソコンで、ファイルが作成されているか確認してみてください!

このような手順で、ファイルをオープンするところからクローズするところまで行うことができるのです。

ではファイルに簡単な操作を加えてみましょう。

#include <stdio.h>
int main(void)
{
  FILE *fp ;
fp= fopen(“test1.txt”, “w”) ;
if ( fp == NULL ){
printf(“ファイルをオープンできませんでした。¥n”) ;
      return 1 ;
    }else{
        printf(“ファイルをオープンしました。¥n”) ;
    }

fputs(“Hello\n” , fp ) ;


    fclose(fp) ;
    printf(“ファイルをクローズしました。¥n”) ;
    return 0 ;
}

「fputs」を用いることで、作った(オープンした)ファイルに対して、文字を書き込むことができます。

fputs(“Hello\n” , fp ) ;

「Hello」という文字を「fp」が指しているファイルに書きこむ。
というプログラムです。

自分のパソコンでファイルを確認してみてください!
「Hello」と書き込まれているはずです。

その他単語や用語まとめ

先ほどから出てきている単語を少し整理します。

ファイルポインタ
 ファイルのポインタを格納する変数

NULL
 何もないこと、何も入っていないこと

return 1
 main関数において、「異常終了」を表します。
 他の関数で使用した場合は、「1を返す」という意味になります。

オープンモードまとめ

ファイルをオープンするときに、どのような操作を行うかなどによって、ファイルの開き方を変えることができます。

その一覧がこちらです。

オープンモード意味
“w”書き込むためにテキストファイルをオープン
“r”読み込むためにテキストファイルをオープン
“a”追記用にテキストファイルをオープン
“w+”更新用にテキストファイルを新規作成
“r+”更新用にテキストファイルをオープン
“a+”更新のための追記用にテキストファイルをオープン
“wb”書き込むためにバイナリファイルをオープン
“rb”読み込むためにバイナリファイルをオープン
“ab”追記用にバイナリファイルをオープン

追記するとは、ファイルの末尾から文章などを書き込めることです。

バイナリファイルとは、テキストファイル以外のファイルという認識です。
人間が読めないファイル2進数のファイルという意味です。

最後に

ファイルの入出力には様々な用途があり、プログラミングの幅を広げてくれます。

これからもC言語を学習していきましょう!

最後まで読んでいただきありがとうございました!