将2D数组(array [j] [i])的值输出到Excel中,形成一个包含i列和j行的表

时间:2015-10-13 11:22:29

标签: c arrays excel

我编写了一个程序,通过一维固体模拟热通量。它产生所有距离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

1 个答案:

答案 0 :(得分:0)

你必须使用';'昏迷字符分隔字段;你的主要功能应该是这样的:

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;
}