ファイルを読み取ってその内容を出力する C プログラム

  • ファイルを読み取ってその内容を出力する C プログラムの書き方
  • ファイルの内容を印刷できますか?
  • C でファイルの内容を出力する方法
  • ファイルの内容を読み取ってコンソールに表示する C プログラムを作成しますか?

上記の質問のいずれかをしている場合は、適切な場所に来ています。この記事では、ファイルを読み取ってその内容をコンソールに出力する C プログラムを作成する方法について説明します。 C にはファイルの内容を読み取る関数がたくさんあります。これらの関数は fgets、fgetc、fscanf などです。

注: ファイルは読み取りモードで開く必要があることに注意してください。

C で fscanf を使用してファイルを読み取る C プログラム:

fscanf 関数は、stream が指すストリームからフォーマットされたデータを読み取るために使用されます。 fscanf 関数の引数は、fscanf にファイル ポインタ (最初の引数) である追加の引数があることを除いて、scanf 関数と似ています。このファイル ポインターは、フォーマットされた入力からのファイルが読み取られることを示します。

fscanf() の構文:

int fscanf(FILE * restrict stream, const char * restrict format, ...);

注: fscanf では、フォーマットの引数が不十分な場合の動作は未定義です。

fscanf() の戻り値:

成功すると、fscanf 関数は入力読み取りの総数を返し、エラーまたはファイルの最後で EOF を返します。

fscanf() を使用してファイルを読み取る C プログラム:

これで、fscanf 関数に精通していると思います。それでは、fscanf 関数を使用してファイルを読み取る方法のプログラムを見てみましょう。

#include <stdio.h>

//Maximum size of the array
#define MAX_SIZE  32

int main()
{
    //file pointer
    FILE *fp = NULL;
    char readFileData[MAX_SIZE+MAX_SIZE] = {0};

    //open file
    fp = fopen("aticleworld.txt", "r");
    if(fp == NULL)
    {
        printf("Error in opening the file\n");
        exit(1);
    }

    //read file data
    fscanf(fp,"%s",readFileData);

    //Display read data
    puts(readFileData);

    //close the file
    fclose(fp);

    printf("Read file successfully\n");

    return 0;
}

出力:

コードの説明:

上記の c コードでは、まず、作成済みのテキスト (「aticleworld.txt」を開きます。 ”) ファイルを読み取りモードで読み込み、ファイル ポインタを取得します。 if 条件を使用して、ファイルが正常に開かれたかどうかを確認しています。

//open file
fp = fopen("aticleworld.txt", "r");
if(fp == NULL)
{
    printf("Error in opening the file\n");
    exit(1);
}

ファイルを正常に開いた後、c fscanf 関数を使用してファイル (“aticleworld.txt”) を読み取りました。

//read file data
fscanf(fp,"%s",readFileData);

最後に、puts を使用して読み取りファイル データをコンソールに表示し、fclose を使用して開いているファイルを閉じました。

//Display read data
puts(readFileData);

//close the file
fclose(fp);

C で fgets を使用してファイルを読み取る C プログラム

fgets 関数は、指定されたストリームから文字を読み取り、文字配列に格納します。 n-1 文字のみを読み取ります。ここで、n は指定された文字数です。

改行文字または (n-1) を読み取ると読み取りを停止します 文字、またはファイルの終わりに遭遇しました。良いことは、 null character を書くことです 最後の文字を配列に書き込んだ直後。

fgets の構文:

char *fgets(char * restrict s, int n,FILE * restrict stream);

fgets() の戻り値:

成功すると、fgets 関数は文字列を返します (同じ s パラメータ)。エラーの場合は null ポインターを返します。

Note: ファイルの終わりが検出され、「s」に文字が読み込まれていない場合 」 (文字配列)、「s」の内容 」は変更されず、null ポインターが返されます。

fgets() を使用してファイルを読み取るプログラム:

次の C プログラムは、fgets を使用してファイルの内容を読み取る方法を説明しています。 機能し、コンソール画面に表示します。

#include <stdio.h>

//Maximum size of the array
#define MAX_SIZE  32

int main()
{
    //file pointer
    FILE *fp = NULL;
    char readFileData[MAX_SIZE] = {0};

    //open the file
    fp = fopen("aticleworld.txt", "r");
    if(fp == NULL)
    {
        printf("Error in opening the file\n");
        exit(1);
    }

    //Read file using fgets
    if(fgets(readFileData,MAX_SIZE,fp) == NULL)
    {
        printf("Error in reading the file\n");
        //close the file
        fclose(fp);
        exit(1);
    }

    //Display read data
    puts(readFileData);

    //close the file
    fclose(fp);

    printf("Read file successfully\n");

    return 0;
}

出力:

コードの説明:

上記の c fgets の例では、まず、作成済みのテキスト (「aticleworld.txt」) ファイルを読み取りモードで開き、ファイル ポインターを取得します。 if 条件を使用して、ファイルが正常に開かれたかどうかを確認しています。

//open the file
fp = fopen("aticleworld.txt", "r");
if(fp == NULL)
{
    printf("Error in opening the file\n");
    exit(1);
}

ファイルを正常に開いた後、c fgets を使用してファイル (“aticleworld.txt”) から文字配列を読み取りました。また、if 条件を使用して、fgets がエラーなしで文字配列を読み取るかどうかを確認しました。

//Read file using fgets
if(fgets(readFileData,MAX_SIZE,fp) == NULL)
{
    printf("Error in reading the file\n");
    //close the file
    fclose(fp);
    exit(1);
}

最後に、puts を使用して読み取り文字配列をコンソールに表示し、fclose を使用して開いているファイルを閉じました。

//Display read data
puts(readFileData);

//close the file
fclose(fp);

C で fgetc を使用してファイルを読み取る C プログラム

fgetc() 関数は、ストリームから 1 文字を読み取り、それらの ASCII 値を返します。文字を読み取った後、ストリームに関連付けられているファイル位置インジケータを進めます。引数ファイル ストリームを 1 つだけ取ります。

fgetc() の構文:

int fgetc(FILE *stream);

C での fgetc の戻り値:

成功すると、文字の ASCII 値を返します。エラーまたはファイルの終わりの場合、EOF を返します。

fgetc を使用してファイルを読み取る C コード:

次の C プログラムは、fgetc を使用してファイルの内容を読み取る方法を説明しています。 機能し、コンソール画面に表示します。

#include <stdio.h>

int main()
{
    //file pointer
    int ch = 0;
    FILE *fp = NULL;

    //open the file in read
    fp = fopen("aticleworld.txt", "r");
    if(fp == NULL)
    {
        printf("Error in opening the file\n");
        exit(1);
    }

    while( (ch=fgetc(fp)) != EOF )
    {
        //Display read character
        printf("%c", ch);
    }

    //close the file
    fclose(fp);

    printf("\n\n\nRead file successfully\n");

    return 0;
}

出力:

コード分析:

上記の c fgetc の例では、まず、作成済みのテキスト (「aicleworld.txt」) ファイルを読み取りモードで開き、ファイル ポインターを取得します。 if 条件を使用して、ファイルが正常に開かれたかどうかを確認しています。

//open the file in read
fp = fopen("aticleworld.txt", "r");
if(fp == NULL)
{
    printf("Error in opening the file\n");
    exit(1);
}

ファイルを正常に開いた後、while ループを使用して、ファイル (“aticleworld.txt”) のすべての文字をトラバースしました。 fgetc が EOF を取得すると、制御が while ループから抜け出します。

while( (ch=fgetc(fp)) != EOF )
 {
     //Display read character
     printf("%c", ch);
 }

最後に、開いているファイルを閉じるために fclose を使用しました。

//close the file
fclose(fp);

C で fread を使用してファイルを読み取る C プログラム

fread 関数は、指定されたストリームから指定された配列に nmemb 要素を読み取ります。要素ごとに fgetc が size 回 (1 つの要素のバイト数) 呼び出され、ストリームのファイル位置インジケータが読み取られた文字数だけ進められます。

これは stdio.h で宣言され、4 つの引数を取ります。 fread 関数は通常、バイナリ ファイルに対して、指定されたファイル ストリームからバイナリ データを読み取るために使用されます。

fread の構文:

size_t fread(void * restrict ptr, size_t size, size_t nmemb,
             FILE * restrict stream);

fread() の戻り値:

成功すると、正常に読み取られた要素の数を返します。エラーの場合、nmemb 未満の要素数を返します。

注: size または nmemb が 0 の場合、fread は 0 を返し、配列の内容と入力ストリームの状態は変更されません。

fread を使用してファイルを読み取る C プログラム:

次の C プログラムは、fread を使用してファイルの内容を読み取る方法を説明しています。 機能し、コンソール画面に表示します。

#include <stdio.h>

//Maximum size of the array
#define MAX_SIZE  32

int main()
{
    //file pointer
    FILE *fp = NULL;
    char readFileData[MAX_SIZE] = {0};

    //open the file
    fp = fopen("aticleworld.txt", "r");
    if(fp == NULL)
    {
        printf("Error in opening the file\n");
        exit(1);
    }

    // Read 5 character from stream
    fread(readFileData,sizeof(char),6, fp);

    //Display read data
    puts(readFileData);

    //close the file
    fclose(fp);

    printf("Read file successfully\n");

    return 0;
}

出力:

コード分析:

上記の c fread の例では、まず、作成済みのテキスト (「aticleworld.txt」) ファイルを読み取りモードで開き、ファイル ポインターを取得します。 if 条件を使用して、ファイルが正常に開かれたかどうかを確認しています。

//open the file
fp = fopen("aticleworld.txt", "r");
if(fp == NULL)
{
    printf("Error in opening the file\n");
    exit(1);
}

ファイルを正常に開いた後、c fread を使用してファイル (“aticleworld.txt”) の内容を読み取りました。

// Read 5 character from stream
fread(readFileData,sizeof(char),6, fp);

最後に、puts を使用して読み取り文字配列をコンソールに表示し、fclose を使用して開いているファイルを閉じました。

//Display read data
puts(readFileData);

//close the file
fclose(fp);

おすすめの記事:

  • C プログラミングのコースとチュートリアル
  • CPP プログラミング コースとチュートリアル
  • ファイルを作成して情報を保存する C プログラム
  • C で fgetc() を使用する方法
  • わずか数時間で C 言語によるファイル処理
  • C で fwrite() を使用する方法
  • C プログラミングで fputs() を使用しますか?
  • C で fopen() を使用する方法
  • C で fread() を使用する方法