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);
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!
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。