fscanf函数的功能,用scanf函数

http://www.itjxue.com  2023-01-06 03:47  来源:未知  点击次数: 

fscanf()函数 的具体功能。 举例说明一下!!

比如fscanf(fp,"%d %d %s",x,y,s);

fp是文件句柄,你需要先准备好,比如FILE *fp; fp=fopen("c:\\data\\note.txt","rb");读写完成后要用fclose(fp);关闭;

双引号中表示了按照什么格式和数据类型来输入数据,%d表示输入int型数据,%s表示输入一个字符串,还有许多类型,请百度fscanf语法去查;

后面跟的x,y,s表明输入到哪些变量中去,这些变量在之前需要定义,如:int x,y; char s[256];这些变量的顺序和数量必须与你在双引号中的定义相同。其中的表示取变量地址。

具体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读取一个整数

fscanf的用法

fprintf、fscanf的读写对象不是终端而是磁盘文件;

调用方式为:int fprintf(文件指针,格式字符串,输出表列 )返回值:返回实际输出的字符数,

操作不成功返回EOF

int fscanf(文件指针,格式字符串,输入表列 )返回值:返回输入的数据个数,操作不成功返回EOF

fprintf(fp, "%d, %6.2f", i, t)将整型变量 i 和实型变量 t 的值按%d和%6.2f的格式输出到fp所指向的文件中;若i=3,t=4.5,则输出到磁盘中的格式为:3, 4.50相应的,从文件中读取数据时,则应用:fscanf(fp, "%d, %f", i, t)

在运用fprintf与fscanf时,在向文件输出数据及从文件读取数据时,分隔符应该相一致。如下程序所示,该程序的功能是:用户输入8个整型数据,程序回显并把数据写到int.txt文件中,然后程序再从int.txt文件中读取数据,并显示出来。

fscanf()函数用法

fscanf把文件中的回车换行符号0x0a也作为一次输入,

会出现fv=0x0a,x y z = 0.000的情况,所以你会多出一个空行,然后是三个0

解决方法是在fscanf的格式化字符串中增加一个\n

另外,你的语句顺序不对,count++应该放在打印输出之后,不然岂不是输出全0零了

fscanf(fp,"%c%lf%lf%lf\n",data[count].fv,data[count].x,data[count].y,data[count].z);

coutdata[count].fv" "data[count].x" "data[count].y" "data[count].zendl;

count++;

(责任编辑:IT教学网)

更多

推荐其它系统文章