我想将多个数组写入一个文件。
我正在使用:
double *x = (double*) malloc ( ArraySize * sizeof(double) );
double *y = (double*) malloc ( ArraySize * sizeof(double) );
double *z = (double*) malloc ( ArraySize * sizeof(double) );
FILE * theFile;
int N = 3;
double *theFileName[ ] =
{
[ 0 ] = x ,
[ 1 ] = y ,
[ 2 ] = z
};
theFile = fopen( "mydata", "wb" );
assert( NULL != theFile );
for ( int i = 0; i < N; i++ )
fwrite( &theFileName[ i ] , sizeof( double ) , ArraySize , theFile + i );
fclose( theFile );
我的问题/问题:
1)使用
theFile + i
导致seg错误。
如何确保每个数组都写入文件的不同部分呢?
2)有没有办法在不同的列中写入每个数组,以便能够处理数据?
------ UPDATE --------------
我发现创建“列”时,我可以这样做:
fwrite( x + i , sizeof( double ) , ArraySize , theFile );
fwrite( "\t" , sizeof( char ) , 1 , theFile );
fwrite( y + i , sizeof( double ) , ArraySize , theFile );
fwrite( "\n" , sizeof( char ) , 1 , theFile );
但即使我使用“mydata.txt”,我也会收到“@?”作为输出。
好的,fwrite仅用于二进制格式,但有没有办法只检查数字?
我对fortrans“写”到dat文件很困惑,你可以在那里看到数字。
答案 0 :(得分:2)
fwrite
自动推进文件指针。您只需每次都将theFile
传递给它,而不添加任何内容,它将继续添加到输出文件中。
答案 1 :(得分:2)
C中的文件只是一个字节流。 fwrite
只表示写下N个字节,而fread表示&#34;读取下N个字节&#34;。
没有&#34;列&#34;在C文件中。你需要在文件中使用任何结构,你需要自己强加。
答案 2 :(得分:1)
我相信你想要的是简单的格式化输出到文本文件 - 所以你可以打开并阅读它。如果是这种情况,fprintf
就是您想要的,而不是fwrite
:
theFile = fopen( "mydata", "a" );
for ( int i = 0; i < N; i++ )
fprintf (theFile, "%f\t%f\n", (double)(*(x+i)), (double)(*(y+i)));