我编写了一个程序来模拟一维实体的热通量。它在所有距离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/

10-15 14:27