用fprintf%.2f写入,为什么用fscanf%.2f读取不了,而用fscanf%f能读
fscanf不识别%.2f,直接用fscanf("%f")就可以。
所有scanf系列的读取浮点型数据的函数基本都不支持%.2f这种写法了。
scanf("%.2f",...)这种写法在旧版本教程的理论知识中是支持的,但是现在的编译器基本都不支持了。
%.2f是输出时候能用的,输入时无论scanf,fscanf,sscanf都不要在%f间加限定符
.2f是限制输出2位小数
输入的时候不能限制输入几位小数,%f就代表float类型
而%.是个非法格式
fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。
这两个函数的原型为:
int fscanf ( FILE *fp, char * format, ... );
int fprintf ( FILE *fp, char * format, ... );
fp 为文件指针,format 为格式控制字符串,… 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参数。
例如:
FILE *fp;
int i, j;
char *str, ch;
fscanf(fp, "%d %s", &i, str);
fprintf(fp,"%d %c", j, ch);
fprintf() 返回成功写入的字符的个数,失败则返回负数。
fscanf() 返回参数列表中被成功赋值的参数个数。