将许多数组写入一个文件 - 用列分隔它们 - “@?”作为输出

时间:2014-09-04 12:36:31

标签: c file

我想将多个数组写入一个文件。

我正在使用:

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文件很困惑,你可以在那里看到数字。

3 个答案:

答案 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)));