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

C言語でファイルからデータを読み込み、表形式で表示するプログラムの作成方法

問題

C言語を使って、ファイルに保存されている一連のデータ項目を読み取り、それをコンソール上に列(表)形式で表示するには、どのようにプログラムを書けばよいのでしょうか。

解決策

まずファイルを書き込みモードで開き、一連の情報を書き込んだ後にファイルを閉じます。その後、再度同じファイルを読み込みモードで開き、データをコンソール上に列形式で表示します。

ファイルを書き込みモードで開く

FILE *fp;
fp = fopen("sample.txt", "w");
  • 指定したファイルが存在しない場合は、新しいファイルが作成されます。
  • ファイルがすでに存在する場合は、以前の内容は消去され、新しく書き込まれた内容だけが保存されます。

ファイルを読み込みモードで開く

FILE *fp;
fp = fopen("sample.txt", "r");
  • 指定したファイルが存在しない場合、fopen関数はNULLを返します。
  • ファイルが存在する場合は、正常にデータを読み込むことができます。

読み込んだデータをコンソール上に表形式で表示するためのロジックは以下のとおりです。カンマを検出するとタブ文字に置き換えて出力することで、各項目が整然とした列に並ぶようにしています。

while ((ch = getc(fp)) != EOF) {
    if (ch == ',')
        printf("\t\t");
    else
        printf("%c", ch);
}

プログラム

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

int main() {
    char ch;
    FILE *fp;

    /* ファイルを書き込みモードで開く */
    fp = fopen("std1.txt", "w");

    printf("enter the text. press cntrl Z:\n");

    /* 標準入力からEOFまで読み取り、ファイルへ書き込む */
    while ((ch = getchar()) != EOF) {
        putc(ch, fp);
    }
    fclose(fp);

    /* ファイルを読み込みモードで開き直す */
    fp = fopen("std1.txt", "r");

    printf("text on the file:\n");

    /* ファイルの内容を読み取り、カンマをタブに置き換えて表示 */
    while ((ch = getc(fp)) != EOF) {
        if (ch == ',')
            printf("\t\t");
        else
            printf("%c", ch);
    }
    fclose(fp);

    return 0;
}

実行結果

ユーザーが「名前, 項目, 価格」のようなカンマ区切りのデータを入力し、Ctrl + Z(Windowsの場合)でEOFを送信すると、ファイルに保存された内容が整形されて表示されます。

enter the text. press cntrl Z:
Name,Item,Price
Bhanu,1,23.4
Priya,2,45.6
^Z
text on the file:
Name        Item        Price
Bhanu       1           23.4
Priya       2           45.6

プログラムのポイント

  • fopen関数:第1引数にファイル名、第2引数にモード("w"は書き込み、"r"は読み込み)を指定してファイルを開きます。
  • getc / putc関数:それぞれファイルから1文字ずつ読み取る・書き込むための標準ライブラリ関数です。
  • EOF判定:whileループ内でEOF(End Of File)に達するまで処理を繰り返すことで、ファイル全体を扱えます。
  • fclose関数:使用後は必ずファイルを閉じてリソースを解放することが重要です。
  1. JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順

    CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各

  2. Javaでプロパティファイルからデータを読み取る方法を解説

    JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー