我编写了一个程序来模拟一维实体的热通量。它在所有距离x处都产生通量值,然后增加时间并重复。我现在的问题是,我想将结果写到Excel中,该格式会生成一个基本表,其中水平方向的距离变化和垂直方向的时间变化。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float fluxfunction(int x,int t)
{
int n, L=10, q1=2, k = 5;
float flux1=0, pi = 3.141592, exp = 2.718281;
for(n=1;n<=1000;n++)
{
flux1+=q1*(2/(pi*n))*(cos(n*pi)-1)*(sin((n*pi*(x+L))/(2*L)))*pow(exp,-(k*t*(n*n*pi*pi)/(4*L*L)));
}
flux1+=q1;
return flux1;
}
int main()
{
int i, j, L=10,tmax=30;
float f, results [tmax+1][L+1];
FILE *fp;
fp = fopen("fouriertest.csv", "w");
for(j=0;j<=tmax;j++)
{
for(i=0;i<=L;i++)
{
results [j][i]=fluxfunction(i,j);
if (i==L)
{
fprintf(fp, "%f\n",results [j][i]);
}
else
{
fprintf(fp, "%f",results [j][i]);
}
}
}
return 0;
}
到目前为止,这就是我所得到的,但是不幸的是,在这里我尝试沿着列写增加
i
的值,但是没有单元格分隔。如图所示:http://i.stack.imgur.com/rbN5y.png
最佳答案
您必须使用';'
逗号分隔字段;您的主要功能应如下所示:
int main()
{
int i, j, L=10,tmax=30;
float f, results [tmax+1][L+1];
FILE *fp;
fp = fopen("fouriertest.csv", "w");
for(j=0;j<=tmax;j++)
{
for(i=0;i<=L;i++)
{
results [j][i]=fluxfunction(i,j);
fprintf(fp, "%f%c",results [j][i],(i==L)?'\n':';');
}
}
fclose(fp);
return 0;
}
关于c - 将2D数组(array [j] [i])的值输出到Excel中以形成具有i列和j行的表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33101367/