我正在编写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文件。它无法保存早期程序运行的值。
答案 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);
注意:
在每个值后添加逗号但最后一个
在每一行之后添加换行符
仅关闭文件。