知道为什么我用这个printf得到0.000000?我检查了文件并且创建得很好
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double doub1;
FILE *p;
if((p=fopen("data.txt","wb+"))==NULL)
puts("no");
fprintf(p,"%lf@%lf\n%lf%s",3.9458,314.32133,32.3,"hello");
fscanf(p,"%lf",&doub1);
printf("%lf",doub1);
}
答案 0 :(得分:2)
要写入使用+
打开的流并从同一个流中读取,您需要先刷新输出:
fflush(p);
但是,这不会重新定位文件位置指示器。要阅读您已经写过的字符,您需要回头查看它们。没有单独的文件位置指示器用于读写:
fseek(p, 0, SEEK_SET); // go to start of file
fseek
执行隐式同花,因此如果您正在执行fflush
,则不需要fseek
。
此外,在尝试打印输出之前,应检查fscanf
的返回值。如果扫描失败,则表示您正在打印未初始化的变量。