このガイドでは、Cプログラミング言語を使用してファイルに対して入出力(I / O)操作を実行する方法を学習します。
CファイルI / O –目次
1。ファイルを開く
2。ファイルの読み取り
3。ファイルの作成
4。ファイルを閉じる
5。ファイルへの文字列の読み取りと書き込み
6。 Cでのバイナリファイルの読み取りと書き込み
各操作について詳しく説明する前に、簡単なCプログラムを見てみましょう。
ファイルを開いたり、読んだり、閉じたりする簡単なCプログラム
上記のプログラムでは、ファイルnewfile.txt
をr
モードで開き、ファイルの内容を読み取って表示しています。コンソール上でそれ。各操作を詳しく理解しましょう:
ファイルを開く
fopen()
関数はファイルを開くために使用されます。
構文:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
は任意のものにすることができます選択。
file_name
は、開くファイルの名前です。ここで「C:\\ myfiles \\ newfile.txt」のようにフルパスを指定します。
ファイルを開くときに、モードを指定する必要があります。ファイルの読み取りに使用するモードは「r」です。 」は「読み取り専用モード」です。
例:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
最初の文字のアドレスは。
ファイルが正常に開かれたかどうかを確認するにはどうすればよいですか?
ファイルが正常に開かなかった場合、ポインタにはNULL値が割り当てられるため、次のようなロジックを記述できます。 :
このコードは、ファイルが正常に開かれたかどうかを確認します。ファイルが開かない場合は、ユーザーにエラーメッセージが表示されます。
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
さまざまなファイルを開くモード:
ファイルはfopen()
機能を使用して開きますが、開くときは、要件に応じて次のモードのいずれかを使用できます。
Mode “r”:これは読み取り専用モードです。つまり、ファイルをrモードで開いた場合、ファイルの内容を書き込んだり変更したりすることはできません。 fopen()
がファイルを正常に開くと、ファイルの最初の文字のアドレスが返されます。それ以外の場合は、NULLが返されます。
モード “w”:書き込みですモードのみ。fopen()
関数は、指定されたファイルが存在しない場合に新しいファイルを作成し、ファイルを開くことができない場合はNULLを返します。
モード ” a」:このモードを使用すると、既存のファイルの最後にコンテンツを追加できます。モード「w」と同様に、fopen()
は、ファイルが存在しない場合に新しいファイルを作成します。開いて失敗すると、NULLを返します。
ファイルポインタは、ファイルの最後の文字を指します。 。
モード “r +”:このモードはモード “r”と同じですが、このモードで開いたファイルに対してさまざまな操作を実行できます。ファイルの内容の読み取り、書き込み、および変更が許可されます。 「r +」モードで開かれます。
ファイルポインタが指すもの:ファイルの最初の文字。
モード「w +」:実行可能な操作を除いて、モード「w」と同じです。このモードでは、ファイルの読み取り、書き込み、および変更を行うことができます。
モード「a +」:モード「a」と同じ。ファイル内のデータを読み取って追加することはできますが、このモードではコンテンツの変更は許可されていません。
ファイルの読み取り
ファイルを読み取るには、まずファイルを使用して開く必要があります。たとえば、ファイルを読み取るだけの場合は、「r」モードで開きます。ファイルを開くときに選択したモードに基づいて、ファイルに対して特定の操作を実行できます。
Cファイルを読み取るプログラム
fgetc():この関数は、現在のポインタの位置から文字を読み取り、読み取りが成功すると、ポインタをファイル内の次の文字に移動します。ポインタがファイルの最後に到達すると、 、この関数はEOF(ファイルの終わり)を返します。プログラムでEOFを使用して、ファイルの終わりを判別しました。
ファイルへの書き込み
ファイルを書き込むには、書き込みをサポートするモードでファイルを開く必要があります。たとえば、「r」モードでファイルを開くと、「r」は読み取りのみを許可する読み取り専用モードであるため、ファイルを書き込むことができません。
例:作成するCプログラムファイル
このプログラムは、ユーザーに文字の入力を求め、その文字をファイルの最後に書き込みます。ファイルが存在しない場合、このプログラムは指定された名前でファイルを作成し、入力文字をファイルに書き込みます。
ファイルを閉じる
fclose(fp);
fclose()関数は、開いているファイルを閉じるために使用されます。引数として、閉じたいファイルへのポインタを指定する必要があります。
Cでの開く、読み取り、書き込み、および閉じる操作を示す例
読み取り/書き込み方法(I / O)ファイル内の文字列– fgets & fputs
ここでは、文字列をファイルに読み書きする方法について説明します。
char *fgets(char *s, int rec_len, FILE *fpr)
s:文字列を格納する文字の配列。
rec_len:入力レコードの長さ。
fpr:入力ファイルへのポインタ。
例を見てみましょう:
Cプログラミングでファイルから文字列を読み取る例
上記の例では、次のようなfgets関数を使用しています。
fgets(str, 10, fpr)
ここで、strは、ファイルから読み取った後に文字列を格納する文字列(charの配列)を表します。
10は、必要な文字列の長さです。毎回読み取られます。
fprは、読み取られるファイルへのポインタです。
終了を決定するロジックとしてif(fgets(str、10、fpr)== NULLを使用した理由
上記の例では、ch == EOFを使用してファイルの終わりを認識しています。ここでは、読み取ることができるレコードがなくなるとfgetsがNULLを返すため、このロジックを使用しました。 。
Cプログラム–ファイルへの文字列の書き込み
int fputs ( const char * s, FILE * fpw );
char *s
–の配列char。
FILE *fpw
–書き込まれるファイルへの(FILEタイプの)ポインター。
fputsは2つの引数を取ります–
fputs(str, fpw)
str – strは、文字列が格納されている配列を表します。
fpw –レコードを書き込む必要がある出力ファイルへのFILEポインタ。
fputsに関する注意事項:
デフォルトでは、fputsは、手動で行うために、各レコードの書き込み後に新しい行を追加しません。ファイルへの各書き込みの後に、次のステートメントを指定できます。
fputs("\n", fpw);
バイナリファイルのCファイルI / O
これまで、ファイルがバイナリ(.exeファイルなど)の場合のテキストファイルのファイル操作について学習しました。上記のプログラムはバイナリファイルでは機能しませんが、バイナリファイルの処理に小さな変更があります。主な違いは、ファイル名&モードです。例を使ってこれを理解しましょう。 2つのバイナリファイルがあります。bin1.exe& bin2.exe – bin1.exeのコンテンツをbin2.exeにコピーします:
例:読み取りおよびCでのバイナリファイルの書き込み
注:ファイルを開くモードは、「r」ではなく「rb」と「wb」です& “w” ..