如何将一个由y[77990272]值组成的数组写入一个文本文件,每行文本中有2448个值



如何将y[77990272]值的数组以2448x3264的顺序写入文本文件(使用fopen()函数打开)(因此文本文件中的每行都有2448个值)。

FILE *fp;
fp=fopen("output.txt","w");
for(int i=0;i<7990272;i++)
{
    fprintf(fp,"%fn",y[i]);
}
fclose(fp);
for (int i = 0; i < 3264; i++)
{
    for (int j = 0; j < 2448; j++)
        fprintf(fp, "%f", y[i*2448+j]);
    putc('n', fp);
}

剩下的问题是,所写的数字之间不会有任何空格。有多种方法可以解决这一问题;我通常在上使用变体

for (int i = 0; i < 3264; i++)
{
    const char *pad = "";
    for (int j = 0; j < 2448; j++)
    {
        fprintf(fp, "%s%f", pad, y[i*2448+j]);
        pad = " ";
    }
    putc('n', fp);
}

如果你不喜欢数组下标的重新计算,你可以保留另一个简单单调递增的变量:

index = 0;
for (int i = 0; i < 3264; i++)
{
    const char *pad = "";
    for (int j = 0; j < 2448; j++)
    {
        fprintf(fp, "%s%f", pad, y[index++]);
        pad = " ";
    }
    putc('n', fp);
}

维护一个计数器来跟踪每行上写入的值,如下所示?

FILE *fp;
fp=fopen("output.txt","w");
const int NUM_VALUES_PER_LINE = 2448;
int count = 0;
for(int i=0;i<7990272;i++)
{
    fprintf(fp,"%f ",y[i]);
    count++;
    if (count == NUM_VALUES_PER_LINE)
    {
        fprintf(fp, "n");
        count = 0;
    }
}
fclose(fp);

最新更新