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

C言語で既存ファイルの総行数をカウントするプログラムの作成方法

この記事では、C言語を使って既存のファイルを開き、そのファイルに含まれる行数を数えるプログラムの作成方法を解説します。指定したファイルが存在する場合は行数をカウントし、存在しない場合は「ファイルが見つからない」というエラーメッセージを表示します。

ファイルとは

ファイルとは、レコード(データ)の集まりのことであり、ハードディスク上にデータを永続的に保存しておくための場所です。

ファイルに対して実行できる主な操作は以下のとおりです。

  • ファイルに名前を付ける(命名)
  • ファイルを開く
  • ファイルから読み込む
  • ファイルへ書き込む
  • ファイルを閉じる

ファイルを開くための構文

ファイルポインタの宣言と、fopen関数によるファイルオープンの基本的な書き方は次のとおりです。

1) FILE *ファイルポインタ;
   例:FILE *fptr;
2) ファイルポインタ = fopen("ファイル名", "モード");
   例:fptr = fopen("sample.txt", "r");

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

プログラム1:既存ファイルの行数をカウントする

まずは、すでに存在するファイルを読み込みモードで開き、1文字ずつ読み取りながら改行文字('\n')の出現回数を数えることで、総行数を求める基本例です。

#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 lines are: %d\n",linesCount);
    return 0;
}

実行結果

Total number of lines are: 3
※ Employee Details.txt の内容:
Pinky
20
5000.000000
→ 合計行数は3行

プログラム2:ユーザー入力したテキストの行数をカウントする

次のプログラムでは、ユーザーが入力したテキストを一旦ファイルに書き込み、その後そのファイルを読み込みモードで開いて行数をカウントします。入力の終了は Ctrl+Z(EOF)で通知します。

#include <stdio.h>
#define FILENAME "sample.txt"
int main(){
    FILE *fp;
    char ch;
    int linesCount=0;
    // ファイルを書き込みモードで開く
    fp=fopen(FILENAME,"w");
    printf ("enter text press ctrl+z of the end");
    while ((ch = getchar( ))!=EOF){
        fputc(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 lines are: %d\n",linesCount);
    return 0;
}

実行結果

enter text press ctrl+z of the end
Hi welcome to Tutorials Point
C Pogramming Question & answers
^Z
Total number of lines are: 2

ポイントまとめ

  • fopen関数の第2引数でモードを指定します("r":読み込み、"w":書き込み)。
  • ファイルが開けなかった場合、fopenはNULLを返すため、必ずNULLチェックを行いましょう。
  • getc関数で1文字ずつ読み込み、改行文字'\n'を検出するたびにカウンターを増やすことで行数を数えられます。
  • 処理が終わったらfclose関数で必ずファイルを閉じることが重要です。
  1. Pythonで数値が強い数(ストロングナンバー)かどうかを判定するプログラムの作成方法

    強い数(Strong Number)とは?強い数(ストロングナンバー)とは、各桁の数字の階乗の合計が元の数値と等しくなる数のことです。例145 1の階乗 = 1 4の階乗 = 24 5の階乗 = 120 合計 = 1 + 24 + 120 = 145この例では、145の各桁(1、4、5)の階乗を足すと145になり、元の数値と一致するため、145は強い数であることがわかります。以下のプログラムは、入力された数値が強い数かどうかを判定します。強い数であれば「True」を返し、そうでなければ「False」を返します。プログラムでは2つの関数を使用しています。1つ目は数値が強い数かどうかを判定する i

  2. Pythonで数値の合計ビット数をカウントするプログラムの作成方法

    まず数値を入力し、bin()関数を使ってその数値を2進数に変換します。次に出力される文字列の先頭2文字「0b」を削除し、最後に2進数文字列の長さを計算することで、合計ビット数を求めることができます。 実行例 入力:200 出力:8 解説 200の2進数表現は 11001000 です(8桁=8ビット) アルゴリズム ステップ1:数値を入力する。 ステップ2:bin()関数を使用して、数値を2進数に変換する。 ステップ3:bin()関数は出力文字列の先頭に「0b」という接頭辞を付加するため、 出力された2進数文字列から最初の2文字「0b」を削除する。 ステップ4:2進