y[7990272] 値の配列を (関数を使用して開いた) テキスト ファイルに 2448x3264 の順序で書き込むにはどうすればよいですかfopen()
(したがって、テキスト ファイルの各行には 2448 の値があります)。
FILE *fp;
fp=fopen("output.txt","w");
for(int i=0;i<7990272;i++)
{
fprintf(fp,"%f\n",y[i]);
}
fclose(fp);
y[7990272] 値の配列を (関数を使用して開いた) テキスト ファイルに 2448x3264 の順序で書き込むにはどうすればよいですかfopen()
(したがって、テキスト ファイルの各行には 2448 の値があります)。
FILE *fp;
fp=fopen("output.txt","w");
for(int i=0;i<7990272;i++)
{
fprintf(fp,"%f\n",y[i]);
}
fclose(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);
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);
}