函数名: fscanf
功 能: 从一个流中执行格式化输入,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)
|
返回值:整型,成功读入的参数的个数(否则返回oxffffffff(文件结束)?)
fscanf用法:fscanf(fp,"%d",&var)
fscanf_s用法:fscanf(fp,"%d",&var,sizeof(int))
区别:fscanf_s需要指定长度
格式字符说明
常用基本参数对照:
%d:读入一个十进制整数.
%i :读入十进制,
八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.
%u:读入一个无符号十进制整数.
%f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.
%x %X: 读入十六进制整数.
%o': 读入
八进制整数.
%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 <stdio.h>
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\n"
);
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\n"
, s );
printf
(
"%ld\n"
, l );
printf
(
"%f\n"
, fp );
printf
(
"%c\n"
, c );
fclose
( stream );
}
}
|