标签:
我们这里只讨论fscanf(或者scanf)的格式,因为这些细节在其他贴里并没有涉及,阅读此文,你可以少走一些弯路。只讲结果,深层原因并不分析。
FILE *pFile;float x1; char name[20];
pFile = fopen(‘"example.txt","r");
1.参数格式:
如fscanf(pFile,"%s%f", name, &x1)可以正确读到数值,那么当把此句中的%f替换为%lf则会出错。反之把x1的变量声明float换成double也会出错。就是说fscanf并不能完成对float和double之间的转换,若fscanf调用格式不匹配则会出意想不到的结果。
2.参数个数:
申明float x2;然后调用fscanf(pFile,"%s%f", name, &x1,&x2)这个语句可以完全正确执行,只是x2并没有赋值而已。但是当fscanf语句改为fscanf(pFile,"%s%f%f", name, &x1)则会出错。
3.Fomat的有效输入:“%s\r\f%f h”像这种输入,编译器会自动解析只留下有意义的部分,即:“%s%f”。
欢迎大家来指正,或帮我解释深层机制,互相学习。
标签:
原文地址:http://www.cnblogs.com/ele-oy/p/scanf.html