C言語 テキストファイルの読み込み - stdio.h - [ fgetc, getc, fgets ]

2008.09.18 Thursday | by LRESULT


ァイルを「開く」、「閉じる」の次は、テキストファイル読み込みです。

テキストファイルを読み込む関数は、まずはfopen()で取得したFILE型変数を使用します。
いくつかあるので順番に見ていきます。


fgetc
書式 int fgetc( FILE *fp )
機能 ファイルから1文字ずつ読み込む
引数 FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、読み込んだ1文字を返し、
ファイル終端の場合は、EOF(-1)を返します。



getc
書式 int getc( FILE *fp )
機能 fgetc()と同じ機能の関数で、マクロ定義されている事のみ異なります。
ファイルから1文字ずつ読み込む
引数 FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、読み込んだ1文字を返し、
ファイル終端の場合は、EOF(-1)を返します。



fgets
書式 char* fgets( char *str, int num, FILE *fp )
機能 ファイルから1行ずつ読み込む
引数 char *str : 文字列を受け取るバッファ
int num : 文字列を受け取るバイト数
FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、読み込んだ文字列のポインタを返し、
失敗すると、NULLを返します。





サンプルコード1
テキストファイル「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;
}



サンプルコード2
次に、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;
}



サンプルコード3
更に、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" );
  whilefgets( s, 100, fp ) != NULL ){
    printf( "%s", s );
  }

  fclose( fp );
  return 0;
}



結果
--------------------------------------
Hello World
The C Programming Language
Test Test
--------------------------------------
どのサンプルでも、このように表示されます。

どうでしょうか?
ファイル読み込みにも、いくつかの方法がありますが
結果は、どれでも同じです。

カテゴリ:C言語 stdio.h | 23:11 | comments(2) | trackbacks(0) | -


コメント

管理者の承認待ちコメントです。

| - | 2014/03/07 12:22 PM |

コメント

管理者の承認待ちコメントです。

| - | 2017/05/02 10:02 AM |

コメントする











この記事のトラックバックURL

トラックバック機能は終了しました。

トラックバック