fscanf和fgets

函数名: 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
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 );
     }
}

你可能感兴趣的:(c++基础学习)