2

バイナリ データをファイルまたは .xml に書き込む関数がありますstdout。ただし、 への呼び出しはfwrite()失敗することがありfflush(stderr)ます。stderrfwrite

これは正常な動作ですか、それとも根本的なメモリの問題を示していますか? しようとしているデータにアクセスするとfprintすぐに「問題」が消えるため、デバッグが困難です。stderrfwritestdout

これは、関数の非常に単純化されたバージョンです。

int writebinary(FILE *fpout, void *data, long ntowrite) {

    long i; 

    /* lets say we know the input data is double float */
    double *p = data; 

    /* including this test line makes the function work! */
    for(i=0; i<ntowrite;i++) fprintf(stderr,"data[%d]=%g\n",i,p[i]);

    /* attempt to write data[] as a single block of bytes */
    m= fwrite(data,(size_t)(ntowrite*sizeof(double)),1,fpout);

    if(m!=1) {
        fprintf(stderr,"Write error: %d\n",ferror(fpout));
        return(-1); 
    }
    else return(m);
}

どんな知恵も感謝します:)

4

1 に答える 1