C言語 空白で区切られたファイルの読み込み - stdio.h - [ fscanf ]

2008.09.19 Friday | by LRESULT


ァイル読み込みの続き。

fgetc()や、fgets()は、テキストファイルをそのまま文字として読み込んでいました。
今回は、書式が決まっているfscanf()を見てみます。
文字だけでなく、整数や小数を数値として読み込む事が出来ます。

意外とコレが曲者で・・
CSVファイルの読み込みは、こちら


fscanf
書式 int fscanf( FILE *fp, const char *format, ... )
機能 書式付き(空白やカンマ区切り)ファイルを読み込む
引数 FILE *fp : ファイル(ストリーム)ポインタ
const char *format : 書式文字列
... : 可変個引数。書式で指定された変数をカンマ区切りで指定
戻り値 成功すると、読み込んだ項目数を返し、
失敗すると、EOF(-1)を返します。





サンプルコード
まずは、空白で区切られた「space.txt」を読み込んで表示してみます。

「space.txt」の中身は以下のように空白で区切る形になっており、
文字列 整数 整数 小数 小数 という書式で書かれています。
これを、fscanf()にそのまま当てはめます。

test01 10 11 1.0 1.1
test02 20 21 2.0 2.1
test03 30 31 3.0 3.1
#include <stdio.h>

int main(void)
{
  FILE *fp;
  char *fname = "space.txt";
  char s[100];
  int ret, n1, n2;
  float f1, f2;

  fp = fopen( fname, "r" );
  if( fp == NULL ){
    printf( "%sファイルが開けません¥n", fname );
    return -1;
  }

  while( ( ret = fscanf( fp, "%s %d %d %f %f", s, &n1, &n2, &f1, &f2 ) ) != EOF ){
    printf( "%s %d %d %f %f¥n", s, n1, n2, f1, f2 );
  }

  fclose( fp );
  return 0;
}



結果
test01 10 11 1.0 1.1
test02 20 21 2.0 2.1
test03 30 31 3.0 3.1
と、表示されます。

まずは上手く空白で区切って読み込む事が出来ました
文字列 整数 整数 小数 小数の箇所をそのままfscanf()に当てはめ
"%s %d %d %f %f" と、しています。

カテゴリ:C言語 stdio.h | 22:31 | comments(1) | trackbacks(0) | -


コメント

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

| - | 2013/12/05 3:26 PM |

コメントする











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

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

トラックバック