c - 读取数据文件中的特定列

Use*_*291 4 c io file scanf

所以我创建了一个这样的数据文件:

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);
}
Run Code Online (Sandbox Code Playgroud)

现在我想读一下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);
Run Code Online (Sandbox Code Playgroud)

而gcc抱怨说:

警告:在gnu_scanf格式中一起使用赋值抑制和长度修饰符[-Wformat =]

fscanf(fp,"%*d%lf%*lf%*lf \n",&表示[i]);

         ^
Run Code Online (Sandbox Code Playgroud)

而且我不确定它在这里告诉我的是什么.

Eug*_*Sh. 8

格式字符串中的长度说明符(即lin lf)用于指示接收参数的大小(如果已分配),同时f说明输入应如何显示.这意味着指定被抑制的字段的长度是没有意义的,并且您的编译器只是试图确保您没有错误地键入*而不是%.只需l从被抑制的字段中删除即可.

  • 每天学些新东西。:) (2认同)