fscanf函数返回值 fscanf函数的用法
大家好,今天来为大家分享fscanf函数返回值的一些知识点,和fscanf函数的用法的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
fscanf函数的用法
用法:int fscanf(FILE*stream,char*format,[argument...]);解析:int fscanf(文件指针,格式字符串,输入列表);返回值:类型是整型,成功读入的参数的个数。新建data.txt文件,存入3组坐标,运行程序并输出结果。
fscanf函数的用法 fscanf第一个参数需要一个文件指针,为了查看实验效果,这里先新建一个名为test.txt的文本文件,放在源代码的文件夹,输入如下内容:
123
123.456
Hello world!
要对文件操作,必须将该文件打开:
fp= fopen("test.txt","r");
同时使用完毕后不要忘记使用fclose关闭文件。
test.txt第一行保存的是一个整数,所以可以使用fscanf先读取一个整数:
fscanf(fp,"%d",&num);
test.txt第二行保存了一个浮点数,按照浮点数的格式进行读取:
fscanf(fp,"%f",&fNum);
需要注意的是,由于浮点数位于第二行,所以要想读取这个浮点数,应当先把第一个数读完,否则读取的回事123.000000
同样可以使用类似的方法读取位于第三行的字符串:
fscanf(fp,"%s", str);
但是,从程序的运行结果发现,第三行存储的是Hello world!,而实际运行结果只有“Hello”,这表明fscanf遇到空格会终止本次读操作。
当将fscanf第一个参数设定为stdin时,将实现和scanf函数相同的效果:
fp= stdin;//设置fp为标准输入
fscanf(fp,"%d",&num);//从fp读取一个整数
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;
}//这样会有意外输出
fscanf的用法
fscanf是一个用于从流中执行格式化输入的函数。
函数声明:int fscanf(FILE*stream,constchar*format,[argument...]);
参数:
FILE*stream:文件指针;
char*format:格式字符串;
[argument...]:输入列表。
返回值:整型,表示成功读入的参数的个数
功能:
从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。
注意:这与fgets有区别,fgets遇到空格不结束。
格式化字符说明:
%d:读入一个十进制整数.
%i:读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.
%u:读入一个无符号十进制整数.
%f%F%g%G:用来输入实数,可以用小数形式或指数形式输入.
%x%X:读入十六进制整数.
%o':读入八进制整数.
%s:读入一个字符串,遇空字符‘\0'结束。
%c:读入一个字符。无法读入空值。空格可以被读入。
附加格式说明字符表修饰符说明
L/l长度修饰符输入"长"数据
h长度修饰符输入"短"数据
实例:
#include<stdlib.h>
#include<stdio.h>
int main(void)
{
int i;
printf("Input an integer:");
/*read an integer from the standard input stream*/
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);
}
return0;
}
关于fscanf函数返回值和fscanf函数的用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。