所以我创建了一个像这样的数据文件:
for(size_t n = ...;...;...){
//do some stuff
double mean_value = ...
double min_value = ...
double max_value = ...
FILE *fp = fopen(OUTPUT_FILE,"a+");
fprintf(fp,"%d %lf %lf %lf\n",n,mean_value, min_value, max_value);
fclose(fp);
}
现在我想阅读我写的mean_value
...
FILE *fp = fopen(OUTPUT_FILE,"a+");
double *means = malloc(...);
for(size_t i = 0; ...; ...){
fscanf(fp,"%*d %lf %*lf %*lf\n", &means[i]);
}
//more stuff
fprintf(fp,...);
fclose(fp);
gcc抱怨说:
警告:在gnu_scanf格式中一起使用赋值抑制和长度修饰符[-Wformat =]
fscanf(fp,"%* d%lf%* lf%* lf \ n",&表示[i]);
^
我不确定它在这里告诉我的是什么。
答案 0 :(得分:8)
格式字符串中的长度说明符(即l
中的lf
)用于指示接收参数的大小(如果已分配),而f
表示输入的输入参数应该是这样的。这意味着指定被抑制的字段的长度是没有意义的,并且您的编译器只是试图确保您没有错误地键入*
而不是%
。只需从已删除字段中删除l
即可。