Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のファイル操作入門!追加(アペンド)モードの使い方と行数カウントの実装例

ファイルとは、レコードの集合体であり、データを永続的に保存しておくためのハードディスク上の場所のことです。本記事では、C言語におけるファイル操作の基本と、追加(アペンド)モードの使い方について詳しく解説します。

ファイルが必要な理由

  • プログラムが終了すると、メモリ上のデータはすべて失われてしまいます。

  • ファイルに保存しておけば、プログラムが終了してもデータは保持され続けます。

  • 大量のデータをキーボードから直接入力するのは、通常非常に時間がかかります。

  • 少数のコマンドだけで、ファイルの内容に簡単にアクセスできます。

  • 内容を変更することなく、あるコンピュータから別のコンピュータへデータを簡単に移動できます。

  • C言語のコマンドを使えば、さまざまな方法でファイルにアクセスすることが可能です。

ファイルに対する主な操作

C言語でファイルに対して行える基本的な操作は以下の通りです。

  • ファイル名の指定
  • ファイルを開く
  • ファイルからの読み込み
  • ファイルへの書き込み
  • ファイルを閉じる

構文

ファイルポインタの宣言は、次の構文で行います。

FILE *ファイルポインタ;

記述例:FILE *fptr;

ファイル名の指定とファイルを開くための構文は以下の通りです。

ファイルポインタ = fopen("ファイル名", "モード");

たとえば、ファイルを追加(アペンド)モードで開く場合は、次のように記述します。

FILE *fp;
fp = fopen("sample.txt", "a");

追加モード("a")の動作は以下のようになります。

  • ファイルが存在しない場合は、新しいファイルが自動的に作成されます。

  • ファイルがすでに存在する場合は、既存の内容を壊さずに、その末尾へ新しいデータが追記されます。

サンプルプログラム

以下は、ファイルを追加モードで開いてデータを追記し、追記前後の行数をカウントして表示するC言語のサンプルプログラムです。

#include<stdio.h>
#define FILENAME "Employee Details.txt"
int main(){
    FILE *fp;
    char ch;
    int linesCount=0;
    //ファイルを読み取りモードで開く
    fp=fopen(FILENAME,"r");
    if(fp==NULL){
        printf("File \"%s\" does not exist!!!\n",FILENAME);
        return -1;
    }
    //1文字ずつ読み込み、改行文字をチェック
    while((ch=getc(fp))!=EOF){
        if(ch=='\n')
            linesCount++;
    }
    //ファイルを閉じる
    fclose(fp);
    //追記前の行数を表示
    printf("Total number of before adding lines are: %d\n",linesCount);
    fp=fopen(FILENAME,"a"); //追加モードで開く
    while((ch = getchar())!=EOF){
        putc(ch,fp);
    }
    fclose(fp);
    fp=fopen(FILENAME,"r");
    if(fp==NULL){
        printf("File \"%s\" does not exist!!!\n",FILENAME);
        return -1;
    }
    //1文字ずつ読み込み、改行文字をチェック
    while((ch=getc(fp))!=EOF){
        if(ch=='\n')
            linesCount++;
    }
    //ファイルを閉じる
    fclose(fp);
    //追記後の行数を表示
    printf("Total number of after adding lines are: %d\n",linesCount);
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Total number of lines before adding lines are: 3
WELCOME to Tutorials
Its C Programming Language
^Z
Total number of after adding lines are: 8

このように、追加モードを使えば既存ファイルの内容を保持したまま新しいデータを追記できるため、ログの記録やデータの蓄積など、さまざまな場面で活用できます。ぜひ実際にコードを書いて、挙動を確認してみてください。

  1. 【C言語】putw()関数とgetw()関数の使い方をわかりやすく解説

    ファイルとは、レコードの集合体であり、データを永続的に保存しておくためのハードディスク上の場所のことです。C言語ではファイルを利用することで、プログラムの実行が終了しても失われないデータを扱えます。ファイルに対する主な操作C言語におけるファイル操作は、基本的に以下の手順で行います。ファイル名を指定する(命名)ファイルを開くファイルから読み込むファイルに書き込むファイルを閉じる基本構文まず、ファイルを扱うためのファイルポインタを宣言します。FILE *ファイルポインタ;宣言例:FILE *fptr;続いて、fopen()関数を使ってファイルを開きます。ファイルポインタ = fopen(ファイル名

  2. 【C言語】putc関数とgetc関数を使ってファイルに1文字ずつ書き込み・読み込みする方法

    ファイルとは ファイル(File)とは、レコードの集まりを指し、ハードディスク上にデータを恒久的に保存しておくための場所のことです。プログラムが終了してもデータが失われないよう、永続的な保存が必要な場合にファイルが利用されます。 ファイルに対する主な操作 C言語におけるファイル操作は、基本的に以下の手順で行います。 ファイル名を指定する ファイルを開く ファイルから読み込む ファイルへ書き込む ファイルを閉じる 基本構文 まず、ファイルを扱うためのファイルポインタを宣言します。 FILE *ファイルポインタ; 宣言の例: FILE *fptr; 次に、fopen関数を使ってファイルを開きま