C言語 標準関数 | 応用 | サンプル

標準関数
構文
応用

管理人

プライバシーポリシー


書式

#include <stdio.h>

int fscanf( FILE *fp , const char *format , ... );

■戻り値:
ファイルポインタfpからの入力をformat文字列に従った変換を行い、format文字列より後ろに指定された引数に代入して、その代入した個数を返す。
変換に失敗した場合はエラーとしてEOF(-1)を返す。
format文字列とは%sや%dを指す。

説明

ファイルポインタfpから読み出した値をプログラム変数に取り込み、その取り込んだ個数を返す。取り込む先のプログラム変数の指定は、上記の書式で指定された第3引数以降「...」部分に任意の個数を指定することができる。

但し、「...」指定時にはアドレス指定でなくてはならない。取り込む変数型はformat文字列にformat指定子として指定するが、取り込む変数の型と順序及び個数を一致させなくてはならない。(一致させた方が無用なトラブルを避けられる)

ファイルポインタfpから入力データを複数個指定するには、ファイル内のレコードが改行されているか、半角空白またはtabで区切って(1行に)複数の値を入力するかである。

尚、取り込んだ変数の末尾にNULL(\0)を補完するのはformat指定子が%sの場合である。
ファイルポインタfpに標準入力stdinを指定した場合の動作はscanfと同じである。

入力ファイル(test.txt)

ABC 456
DEF 789
[EOF]

サンプル

#include <stdio.h>

main() {

  FILE * fp;
  int ret;
  char getstr[4];
  int getint;

  /* Windowsの場合はtest.txt */
  fp = fopen( "./test.txt" , "r" );
  if( fp == NULL ) {
    printf( "ファイルオープンエラー\n" );
    return -1;
  }

  /* ファイルから各変数に変換して代入 */
  while(( ret = fscanf( fp , "%s%d" , getstr , &getint ))
                                                != EOF ) {
    /* 変換して代入された変数を表示 */
    printf( "getstr=%s\n" , getstr );
    printf( "getint=%d\n" , getint );
    printf( "ret=%d\n" , ret );
  }

  printf( "\nret=%d\n" , ret );/* -1 */

  fclose( fp );

  return 0;
}

実行結果

getstr=ABC
getint=456
ret=2
getstr=DEF
getint=789
ret=2

ret=-1


Copyright © 2008-2015 http://hitorilife.com All Rights Reserved.