所以我创建了一个数据文件如下:

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);
}

现在我想看看我写的…
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);

海合会抱怨说:
警告:在gnu-scanf格式中同时使用赋值抑制和长度修饰符[-wformat=]
fscanf(fp,“%*d%lf%*lf%*lf\n”&表示[i]);
         ^

我不知道它想告诉我什么,这里。

最佳答案

格式字符串中的长度说明符(即l中的lf)用于指示接收参数的大小(如果已分配),而f则指示输入的外观。这意味着为被抑制的字段指定长度是没有意义的,编译器只是想确保您没有错误地键入*而不是%。只需从抑制字段中删除l

关于c - c-读取数据文件中的特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35900935/

10-16 17:37