C语言文件读取fscanf(),该怎么处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言文件读取fscanf(),该怎么处理相关的知识,希望对你有一定的参考价值。

fscanf位于头文件<stdio.h>中,函数原型为int fscanf(FILE*stream, constchar*format, [argument...]); 其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。
函数名: fscanf
功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。
返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。
用法:
1 int fscanf(FILE*stream,constchar*format,[argument...]);
FILE *stream:文件指针
char *format:格式字符串
[argument...]:输入列表
格式字符说明
常用基本参数对照:
%d:读入一个十进制整数.
%i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.
%u:读入一个无符号十进制整数.
%f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.
%x %X: 读入十六进制整数.
%o': 读入八进制整数.
%s : 读入一个字符串,遇空字符‘\0'结束。
%c : 读入一个字符。无法读入空值。空格可以被读入。
附加格式说明字符表修饰符说明
L/l 长度修饰符 输入"长"数据
h 长度修饰符 输入"短"数据
示例说明
如果要求从标准输入中输入一串字符串和一个整型数,那么参数“%s%d”表示什么呢?默认情况下,在终端上(这里假设程序为控制台应用程序)输入第一个参数的值的时候敲下回车,则在第二行输入的为第二个参数值,采用这种输入方法那么格式字符的形式就无关紧要了。[1]
这里要特殊说明的是如果参数在同一行给出,那么格式字符的参数与终端的输入会有什么关系。举个例子:如果格式字符为“%s+%d”,那么参数的输入就应该为 string + integer。
程序例
例一
#include <stdlib.h>
#include <stdio.h>
int main(void)

int i;
printf("Input an integer:");
/*从标准输入中读取一个整数*/
if(fscanf(stdin, "%d",&i))
printf("The integer read was:%d\n", i);
else

fprintf(stderr, "Error reading an integer from stdin.\n");
exit(1);

return 0;


返回EOF如果读取到文件结尾。
例二
附:MSDN中例子
#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');
/*将指针设置至文件开头*/
fseek(stream,0L,SEEK_SET);
/*从文件中读取数据*/
fscanf(stream,"%s",s);
fscanf(stream,"%ld",&l);
fscanf(stream,"%f",&fp);
fscanf(stream,"%c",&c);
/*输出读取的数据*/
printf("%s\n",s);
printf("%ld\n",l);
printf("%f\n",fp);
printf("%c\n",c);
fclose(stream);

return 0;
//这样会有意外输出
参考技术A ……
因为%s在读取的时候需要遇到分隔符才中断,所以你文件保存的数据之间要有空格。也就是说你文件中保存的应该是1
tt
66
66
66
66
66
330。即在保存时,应为:
fprintf(fp,"%d
%s
%d
%d
%d
%d
%d
%d",
&r[i].key,
r[i].name,
&r[i].score[0],
&r[i].score[1],
&r[i].score[2],
&r[i].score[3],
&r[i].score[4],
&r[i].total);
参考技术B 直接百度一下

怎么使用C语言读取properties配置文件

参考技术A 用C语言读取properties配置文件的方法:
1、找到配置路径下的properties文件
2、按行读取文件内容
具体实现代码如下:
//定义读入的行数组,1024行
char
line[1024];
//存放配置项数组setting
int
setting[N],i
=
0;
//开始循环读入
while(fgets(fp,line,1024)
!=
NULL)

//读入配置的值给line变量
fscanf(line,"setting%*d
=
%d",&setting[i++]);

以上是关于C语言文件读取fscanf(),该怎么处理的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎样将数字从文件里逐个读取出来

请问C语言对文件的读取都有哪些函数,都有啥功能?像fseek();fscanf();fread......啥的

C语言怎么读取CSV里面的数据?

用C语言读取xml文件,怎么实现?

C语言 fscanf 格式化读取文件中数据

怎么使用C语言读取properties配置文件