fscanfとfgets

4160 ワード

関数名:fscanf
機能:1つのストリームからフォーマット入力を実行し、fscanfがスペースと改行に遭遇した場合に終了し、スペースに注意した場合も終了します.これはfgetsとは異なり、fgetsがスペースに遭遇しても終了しません.
使用方法:
1 int fscanf ( FILE *stream, char *format,[argument...]);
FILE*stream:ファイルポインタ;
char*format:フォーマット文字列;
[argument...]:リストを入力します.
例:
1
2
3
4
5 FILE *fp; char a[10]; int b; double c; fscanf (fp, "%s%d%lf" ,a,&b,&c)
戻り値:整数、正常に読み込まれたパラメータの個数(そうでなければoxffffff(ファイル終了)?)を返します.
 
fscanf用法:fscanf(fp,"%d",&var)
      fscanf_s用法:fscanf(fp,"%d",&var,sizeof(int))
違い:fscanf_s長さの指定が必要
書式文字の説明
一般的な基本パラメータの照合:
%d:10進数の整数を読み込む.
%i:10進数を読み込み、
8進数、16進数は%dと似ていますが、コンパイル時にデータの前置または後置で進数を区別し、「0 x」を加えると16進数、「0」を加えると8進数になります.例えば、列"031"が%dを用いる場合は31とするが、%iを用いる場合は25とする.
%u:符号なしの10進数整数を読み込む.
%f%F%g%G:実数を入力ために使用する、小数または指数で入力することができる.
%x%X:16進数の整数を読み込む.
%o':読み込み
8進整数
%s:文字列を読み込み、空の文字'0'で終了します.
%c:文字を読み込みます.空の値を読み込めません.スペースは読み込めます.
MSDNの例
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 /* FSCANF.C: This program writes formatted data to a file. It then uses fscanf to read the various data back from the file.*/ #include FILE *stream; int main( void ) {      long l;      float fp;      char s[81];      char c;      stream = fopen ( "fscanf.out" , "w+" );      if ( stream == NULL )          printf ( "The file fscanf.out was not opened
"
);      else      {          fprintf ( stream, "%s %ld %f%c" , "a-string" ,          65000, 3.14159, 'x' );          /* Set pointer to beginning of file: */          fseek ( stream, 0L, SEEK_SET );          /* Read data back from file: */          fscanf ( stream, "%s" , s );          fscanf ( stream, "%ld" , &l );          fscanf ( stream, "%f" , &fp );          fscanf ( stream, "%c" , &c );          /* Output data read: */          printf ( "%s
"
, s );          printf ( "%ld
"
, l );          printf ( "%f
"
, fp );          printf ( "%c
"
, c );          fclose ( stream );      } }