C言語 テキストファイルの読み込み - stdio.h - [ fgetc, getc, fgets ]
2008.09.18 Thursday | by LRESULT
ファイルを「開く」、「閉じる」の次は、テキストファイル読み込みです。
テキストファイルを読み込む関数は、まずはfopen()で取得したFILE型変数を使用します。
いくつかあるので順番に見ていきます。
書式 | int fgetc( FILE *fp ) |
---|---|
機能 | ファイルから1文字ずつ読み込む |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、読み込んだ1文字を返し、 ファイル終端の場合は、EOF(-1)を返します。 |
書式 | int getc( FILE *fp ) |
---|---|
機能 | fgetc()と同じ機能の関数で、マクロ定義されている事のみ異なります。 ファイルから1文字ずつ読み込む |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、読み込んだ1文字を返し、 ファイル終端の場合は、EOF(-1)を返します。 |
書式 | char* fgets( char *str, int num, FILE *fp ) |
---|---|
機能 | ファイルから1行ずつ読み込む |
引数 | char *str : 文字列を受け取るバッファ int num : 文字列を受け取るバイト数 FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、読み込んだ文字列のポインタを返し、 失敗すると、NULLを返します。 |
テキストファイル「test.txt」を開いた後、文字列を読み込みます。 テキストの内容は、 -------------------------------------- Hello World The C Programming Language Test Test -------------------------------------- です。 まずは、fgetc()関数で1文字ずつ読み込みます。 |
---|
#include <stdio.h> int main(void) { FILE *fp; char *fname = "test.txt"; int c; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%sファイルが開けません¥n", fname ); return -1; } printf( "¥n-- fgetc() --¥n" ); while( (c = fgetc( fp )) != EOF ){ printf( "%c", c ); } fclose( fp ); return 0; } |
次に、getc()マクロで読み込みます。 機能としては、fgetc()と全く同じです。 |
---|
#include <stdio.h> int main(void) { FILE *fp; char *fname = "test.txt"; int c; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%sファイルが開けません¥n", fname ); return -1; } printf( "¥n-- getc() --¥n" ); while( (c = getc( fp )) != EOF ){ printf( "%c", c ); } fclose( fp ); return 0; } |
更に、fgets()関数でも、同じ「test.txt」ファイルを 1行ずつ読み込んでみます。 |
---|
#include <stdio.h> int main(void) { FILE *fp; char *fname = "test.txt"; char s[100]; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%sファイルが開けません¥n", fname ); return -1; } printf( "¥n-- fgets() --¥n" ); while( fgets( s, 100, fp ) != NULL ){ printf( "%s", s ); } fclose( fp ); return 0; } |
-------------------------------------- Hello World The C Programming Language Test Test -------------------------------------- |
---|
どのサンプルでも、このように表示されます。 どうでしょうか? ファイル読み込みにも、いくつかの方法がありますが 結果は、どれでも同じです。 |