fscanfとfgets
4160 ワード
関数名:fscanf
機能:1つのストリームからフォーマット入力を実行し、fscanfがスペースと改行に遭遇した場合に終了し、スペースに注意した場合も終了します.これはfgetsとは異なり、fgetsがスペースに遭遇しても終了しません.
使用方法:
1
FILE*stream:ファイルポインタ;
char*format:フォーマット文字列;
[argument...]:リストを入力します.
例:
1
2
3
4
5
戻り値:整数、正常に読み込まれたパラメータの個数(そうでなければ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
機能: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 );
}
}