C 言語でのファイルの終わり(EOF)
この記事では、EOF を C で表現するというトピックに焦点を当てます。
C 言語での End of File
(EOF)
End of File
と呼ばれる状況は、データソースから読み取ることができるデータがなくなったときに、コンピューターのオペレーティングシステムで発生します。データソースは、file
または system
と呼ばれることがよくあります。
End of File
(EOF
)メッセージが表示されたら、入力は完了です。
コンテンツを入力した後、CtrlキーとZキーを同時に押すことでテキストを終了できます。これは、ファイルが結論に達したことを示しており、これ以上読み取るものはありません。
C 言語でファイルの終わりに達すると、getc()
関数は EOF
を返します。getc()
は、失敗した場合にもファイルの終わり(EOF)
を返します。
したがって、getc()
によって提供される値を EOF
と比較して、ファイルが最後に到達したかどうかを判断するだけでは不十分です。C は、この問題を解決するための feof()
関数を提供します。
この関数は、ファイルの終わりに達した場合にのみ、ゼロより大きい値を返します。それ以外の場合は、0
を返します。
C 言語でのファイルへの操作
プログラムの大部分は、プログラムから取得した情報を保存するために開発されています。これらの方法の 1つは、取得した情報をファイルに保存することです。
以下は、ファイルに対して実行できるさまざまな操作のリストです。
ファイルを作成する
fopen
プログラムを使用して、a
, a+
, w
, w++
などの特性を指定することで、新しいファイルを作成することが可能である。
ファイルを開く
fopen
機能と適切なアクセスモードは、ファイルが開かれるたびに使用されます。以下は、最も頻繁に使用されるいくつかのファイルアクセスモードです。
-
a
を押すとファイルが検索されます。ファイルが正常に開かれると、fopen()
関数がファイルをメモリにロードし、ファイルから読み取られている文字にリンクするポインタを作成します。ファイルがまだ存在しない場合は、新しいファイルが作成されます。ファイルを開くことができない場合は
Null
を返します。 -
文字
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;
}
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