c语言关于fprintf与fscanf

用fprintf%.2f写入,为什么用fscanf%.2f读取不了,而用fscanf%f能读

fscanf不识别%.2f,直接用fscanf("%f")就可以。
所有scanf系列的读取浮点型数据的函数基本都不支持%.2f这种写法了。
scanf("%.2f",...)这种写法在旧版本教程的理论知识中是支持的,但是现在的编译器基本都不支持了。

%.2f是输出时候能用的,输入时无论scanf,fscanf,sscanf都不要在%f间加限定符

.2f是限制输出2位小数
输入的时候不能限制输入几位小数,%f就代表float类型
而%.是个非法格式

  • 这篇博客也许可以解决你的问题👉 :C语言:fscanf函数与fprintf函数——格式化读写函数
  • 同时,你还可以查看手册:c语言-fprintf() 中的内容
  • 除此之外, 这篇博客: C语言fscanf/fprintf函数(格式化读写文件)的用法(%[]和%n说明符)中的 fscanf() 和 fprintf() 函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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() 返回参数列表中被成功赋值的参数个数。

  • 您还可以看一下 尹成老师的20150522.C语言课程中的 (fscanf&fprintf;)小节, 巩固相关知识点