C 言語でのファイルの終わり(EOF)

Muhammad Zeeshan 2023年10月12日
  1. C 言語での End of File(EOF)
  2. C 言語でのファイルへの操作
  3. C 言語での EOF の例
C 言語でのファイルの終わり(EOF)

この記事では、EOF を C で表現するというトピックに焦点を当てます。

C 言語での End of File(EOF)

End of File と呼ばれる状況は、データソースから読み取ることができるデータがなくなったときに、コンピューターのオペレーティングシステムで発生します。データソースは、file または system と呼ばれることがよくあります。

End of FileEOF)メッセージが表示されたら、入力は完了です。

コンテンツを入力した後、CtrlキーとZキーを同時に押すことでテキストを終了できます。これは、ファイルが結論に達したことを示しており、これ以上読み取るものはありません。

C 言語でファイルの終わりに達すると、getc() 関数は EOF を返します。getc() は、失敗した場合にもファイルの終わり(EOF)を返します。

したがって、getc() によって提供される値を EOF と比較して、ファイルが最後に到達したかどうかを判断するだけでは不十分です。C は、この問題を解決するための feof() 関数を提供します。

この関数は、ファイルの終わりに達した場合にのみ、ゼロより大きい値を返します。それ以外の場合は、0 を返します。

C 言語でのファイルへの操作

プログラムの大部分は、プログラムから取得した情報を保存するために開発されています。これらの方法の 1つは、取得した情報をファイルに保存することです。

以下は、ファイルに対して実行できるさまざまな操作のリストです。

ファイルを作成する

fopen プログラムを使用して、a, a+, w, w++ などの特性を指定することで、新しいファイルを作成することが可能である。

ファイルを開く

fopen 機能と適切なアクセスモードは、ファイルが開かれるたびに使用されます。以下は、最も頻繁に使用されるいくつかのファイルアクセスモードです。

  1. a を押すとファイルが検索されます。ファイルが正常に開かれると、fopen() 関数がファイルをメモリにロードし、ファイルから読み取られている文字にリンクするポインタを作成します。

    ファイルがまだ存在しない場合は、新しいファイルが作成されます。ファイルを開くことができない場合は Null を返します。

  2. 文字 w はファイルを検索します。ファイルがすでに存在する場合は、ファイルの内容が書き換えられます。

    ファイルがまだ存在しない場合は、新しいファイルが作成されます。ファイルを開くことができない場合は、Null が返されます。

ファイルに対して実行する必要のあるアクティビティを実行するために、ファイルポインタと呼ばれる特殊なポインタが使用され、その宣言は次のようになります。

FILE *fp;

したがって、次を使用してファイルを開くことができます。

fp = fopen("Shanii.txt", "w");

ここで、Shanii.txt は開きたいファイルで、2 番目のパラメーターはファイルモードです。

ファイルの読み取り

関数 fscanf および fgets は、ファイルの読み取り操作を実行するために使用されます。これらのメソッドは両方とも、scanf および gets と同じアクションを実行しましたが、ファイルポインターと呼ばれる追加の引数を考慮しました。

情報をどのように整理するかに応じて、ファイルを文字ごとに読み取るか、行ごとに読み取るかを選択できます。以下は、ファイルを読み取るために必要なコードの例です。

FILE* fp;
fp = fopen("shanii.txt", "r");
fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);

ファイルを書く

ファイルの読み取りに使用される関数 fprintf および fputs は、ファイルの書き込みにも使用でき、プロセスはファイルの読み取りと非常によく似ています。ファイルへの書き込み時に使用するコマンドは次のようになります。

FILE *fp;
fp = fopen("shanii.txt", "w");
fprintf(fp, "%s %s %s %d", "I", "am", "Zeeshan", 2000);

ファイルを閉じる

すべてのアクションが正常に完了した後は、常にファイルを閉じる必要があります。ファイルを正常に閉じるには、fclose 関数を使用する必要があります。

ファイルを閉じるためのコードを次に示します。

FILE *fp;
fp = fopen("fileName.txt", "w");
fprintf(fp, "%s %s %s %d", "I", "am", "Zeeshan", 2000);
fclose(fp);

C 言語での EOF の例

たとえば、次の C コードを見て、shanii.txt という名前のテキストファイルの内容を画面に表示します。

getc() の値は、最初に EOF と比較されます。

int charac = getc(filepointer);

while (charac != EOF) {
  putchar(charac);
  charac = getc(filepointer);
}

次に、feof() を使用して 2 番目のチェックが実行されます。このチェックにより、プログラムは、ファイルの終わりに達した場合にのみ Program has reached End-of-file を出力するようになります。

if (feof(filepointer)) {
  printf("\n Program has reached End-of-file");
}

それ以外の場合、プログラムは There was a problem と表示します。

ソースコード:

#include <stdio.h>

int main() {
  FILE *filepointer = fopen("shanii.txt", "r");
  int charac = getc(filepointer);

  while (charac != EOF) {
    putchar(charac);
    charac = getc(filepointer);
  }

  if (feof(filepointer)) {
    printf("\n Program has reached End-of-file");
  } else {
    printf("\n There was a problem");
  }
  fclose(filepointer);
  getchar();
  return 0;
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn