将值从多维数组写入.csv文件

时间:2017-03-02 09:00:49

标签: c csv multidimensional-array

我正在编写C程序,最终将包含两个需要导出到两个csv.files的大型二维数组。

数组(双精度数)长10000行,长8到30列,具体取决于用户定义的内容,例如:

int NOS = 10000;
int Tau_length = 15;
Energy_system_Array[NOS][Tau_length];

我创建了两个文件指针:

FILE *fp1, *fp2;

在课程结束时,我写了以下几行:

int array_rowit, array_colit;
fp1 = fopen("Energyarray.csv", "w");//create a file
    if (fp1 == NULL)
    {
        printf("Error while opening the file.\n");
        return 0;
    }
for (array_colit = 0; array_colit<Tau_length; array_colit++){
    for (array_rowit = 0; array_rowit< start_measure; array_rowit++){
        fprintf(fp1, Energy_system_array[array_rowit,array_colit]);
        fclose(fp1);
    }
}

但是当我编译c代码时,这就是我得到的消息:

main.c: In function 'main':
main.c:413:22: error: incompatible type for argument 2 of 'fprintf'
         fprintf(fp1, Energy_system_array[array_rowit,array_colit]);
                      ^~~~~~~~~~~~~~~~~~~
In file included from main.c:1:0:
C:/MinGW/x86_64-w64-mingw32/include/stdio.h:378:15: note: expected 'const char * restrict' but argument is of type 'double'
   int __cdecl fprintf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
               ^~~~~~~

对于C编程我是一个真正的新手,所以我希望有人可以帮助我。我已经搜索了不同的指南,但我没有找到任何描述我的情况。

我应该提一下,每次运行程序时都应该覆盖csv文件。它无法保存早期程序运行的值。

1 个答案:

答案 0 :(得分:0)

要将整个数组写为CSV,请使用:

for (array_colit = 0; array_colit<Tau_length; array_colit++){
    for (array_rowit = 0; array_rowit< start_measure; array_rowit++){
        fprintf(fp1, "%lf%s",Energy_system_array[array_rowit,array_colit],
                (array_rowit<start_measure-1?",":""));
    }
    fprintf(fp1,"\n");
}
fclose(fp1);

注意:

  • 在每个值后添加逗号但最后一个

  • 在每一行之后添加换行符

  • 所有内容都已写完后,
  • 仅关闭文件