我需要打印/创建(.CSV格式)大小为1940(R)x 512(C)的数组。我有一个大型程序,其中此矩阵是通过使用其他不同的矩阵创建的。执行时,它将所有数据显示在一行中。我需要.csv或excel格式的数据才能使用它。
有人可以帮我在这里做什么吗?
printf("\n")
命令适用于以矩阵形式在屏幕上打印,但是在输出文件中,它们全部在一行中。
for ( i = 0; i < 1940; i++ ) {
for ( j = 0; j < 512; j++ ) {
fprintf(pFile,",%d\t ",X7[i][j]);
//printf("%d\t ", X8[i][j]);
}
printf("\n");
}
答案 0 :(得分:3)
您需要将“换行符”写入文件,而不是控制台。 代替
printf("\n");
写
fprintf(pFile, "\n");
答案 1 :(得分:1)
在您的示例中,您使用:
fprintf(pFile,",%d\t ",X7[i][j]);
您应该使用
fprintf(pFile,"%d,",X7[i][j]);
在数据之后使用逗号代替TAB +空格,因为它是逗号分隔的文件。使用这种方法,最后您将有一个空白列,但这应该不是一个大问题。
代替
printf("\n");
使用
fprintf(pFile,"\n");
答案 2 :(得分:1)
请勿使用\t
(制表符)字符,这会导致每个值之间使用制表符和逗号定界符(我可以看到给定libreoffice或excel合适的值(它是.csv还是制表符分隔文件?)
传统上,您将输出带条件的逗号分隔值,以防止在每行的开头放置逗号。您只需要以下内容:
for (int i = 0; i < 1940; i++) { /* loop over rows */
for (int j = 0; j < 512; j++) { /* loop over columns */
if (j > 0) /* if not 1st in row */
fprintf (pFile, ",%d", ,X7[i][j]); /* add "," before val */
else
fprintf (pFile, "%d", ,X7[i][j]); /* no comma */
}
fputc ('\n', pFile); /* add newline at end of each row */
}