TECH I.S.

C 読み取りファイル


ファイルを読む

前の章では、 fopen() 関数内で w a モードを使用してファイルに書き込みました。

ファイルから読み取るには、r モードを使用できます。

FILE *fptr; // Open a file in read mode fptr = fopen("filename.txt", "r");
これにより、filename.txt が読み取り用に開かれるようになります。 。

C でファイルを読み取るには少し作業が必要です。順を追ってご案内いたします。

次に、ファイルの内容を保存するのに十分な大きさの文字列を作成する必要があります。

たとえば、最大 100 文字を格納できる文字列を作成してみましょう。

FILE *fptr; // Open a file in read mode fptr = fopen("filename.txt", "r"); // Store the content of the file char myString[100];
filename.txt の内容を読み取るには、fgets() 関数を使用できます。
fgets() 関数は 3 つのパラメータを取ります

fgets(myString, 100, fptr);
1、最初のパラメータは、ファイルの内容を保存する場所を指定します。これは、作成したばかりの myString 配列内になります。
2 、2番目のパラメーターは、読み取るデータの最大サイズを指定します。これは、myString (100) のサイズと一致する必要があります。
3、3 番目のパラメーターには、ファイルの読み取りに使用されるファイル ポインター (この例では fptr) が必要です。

これで、ファイルの内容を出力する文字列を出力できます。

FILE *fptr; // Open a file in read mode fptr = fopen("filename.txt", "r"); // Store the content of the file char myString[100]; // Read the content and store it inside myString fgets(myString, 100, fptr); // Print the file content printf("%s", myString); // Close the file fclose(fptr);
Hello World!

実行例»

注: fgets 関数は、ファイルの最初の行のみを読み取ります。 覚えていると思いますが、filename.txt には 2 行のテキストがありました。

ファイルのすべての行を読み取るには、whileループを利用できます。

FILE *fptr; // Open a file in read mode fptr = fopen("filename.txt", "r"); // Store the content of the file char myString[100]; // Read the content and print it while(fgets(myString, 100, fptr)) {   printf("%s", myString); } // Close the file fclose(fptr);
Hello World!Hi everybody!

実行例»


練習

存在しないファイルを読み取り用に開こうとすると、fopen() 関数は NULL を返します。

ヒント: 良い実践として、if ステートメントを使用して NULL かどうかをテストし、代わりにテキストを出力できます (ファイルが存在しない場合)。

FILE *fptr; // Open a file in read mode fptr = fopen("loremipsum.txt", "r"); // Print some text if the file does not exist if(fptr == NULL) {   printf("Not able to open the file."); } // Close the file fclose(fptr);

ファイルが存在しない場合、次のテキストが出力されます。

Not able to open the file.

実行例»

これを念頭に置いて、上記の「ファイルの読み取り」の例をもう一度使用すると、より持続可能なコードを作成できます。

ファイルが存在する場合は、内容を読み取って印刷します。ファイルが存在しない場合は、メッセージを出力します。

FILE *fptr; // Open a file in read mode fptr = fopen("filename.txt", "r"); // Store the content of the file char myString[100]; // If the file exist if(fptr != NULL) {   // Read the content and print it   while(fgets(myString, 100, fptr)) {     printf("%s", myString);   } // If the file does not exist } else {   printf("Not able to open the file."); } // Close the file fclose(fptr);
Hello World!Hi everybody!

実行例»




プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細