バイナリファイル
    Binary file
    Top > C > I/O > ファイル形式
    Index 目次
    + Function fwrite + Function fread + Function fseek + Sample: Compile link with fortran program サンプル: Fortranとのコンパイルリンク
    Function fwrite
    Format 書式 Arguments 引数
    const void * restrict buf Poninter of the data to write.
    size_t size Byte size of one data to write.
    size_t n The number of data to write.
    FILE * restrict fp File pointer.
    const void * restrict buf 書き込むデータのポインター
    size_t size 書き込むデータ1つのバイト数
    size_t n 書き込むデータの個数
    FILE * restrict fp ファイルポインター
    Returns 戻り値 When succeeded in writing: The number of written data. size or n is 0: 0 書き込み成功時: 書き込んだ要素の個数 sizeまたはnが0: 0 Sample Output:
    Function fread
    Format 書式 Arguments 引数
    void * restrict buf Pointer to store the read data.
    size_t size Byte size of one data to read.
    size_t n The number of data to read.
    FILE * restrict fp File pointer.
    void * restrict buf 読み込むデータの格納先ポインター
    size_t size 読み込むデータ1つのバイト数
    size_t n 読み込むデータの個数
    FILE * restrict fp ファイルポインター
    Returns 戻り値 When succeeded in reading: The number of read data. size or n is 0: 0 読み込み成功時: 読み取った要素の個数 sizeまたはnが0: 0 Sample Output:
    Function fseek
    This function changes the file position. ファイル上の位置を変更する. Format 書式 Arguments 引数
    FILE *fp File pointer
    long offset Offset (byte)
    int origin Origin of offset (byte)
    FILE *fp ファイルポインター
    long offset オフセット
    int origin オフセットの始点
    origin must be "SEEK_SET", "SEEK_CUR" or "SEEK_END". originは"SEEK_SET", "SEEK_CUR"または"SEEK_END"のいずれかを指定する.
    SEEK_SET Head of file.
    SEEK_CUR Current position.
    SEEK_END Tail of file.
    SEEK_SET ファイルの先頭
    SEEK_CUR 現在のファイル位置
    SEEK_END ファイルの末尾
    Returns 戻り値 Success: 0 Failure: Other than 0 Sample Output:
    Sample: Compile link with fortran program
    サンプル: Fortranとのコンパイルリンク
    C function (func.c) Fortran program (main.f90) Compile and execute Here n, d and str are pointers (only pointers can be passed from Fortran to C), so it is unnecessary to put "&" on the head of the 1st arguments of fwrite and fread function. To get the length of the string variable, it is passed as an argument. n, d, strいずれもポインターになっているので(FortranからCに渡せるのはポインター変数のみ),func.cのfwrite, freadの第1引数として渡すとき&を付けない. また文字列変数の長さを確実に正しく取得するため,引数として渡すようにしている.FortranとCで文字列をやり取りするときは色々と問題が起きやすいので注意.多分この書き方も本当はあまり良くなくて,モジュールに組み込んだり,複雑な参照の仕方をしたり,ループで何千回も呼び出したりといったことをすると,よく分からないところでSegmentation Faultが発生することがある.この辺の話もいずれ書く予定.
    References
    C言語関数辞典 + http://www.c-tipsref.com/ バイナリファイルの読み書き | Programming Place Plus C言語編 第42章 + https://programming-place.net/ppp/contents/c/042.html 初心者のためのポイント学習C言語 fseek + http://www9.plala.or.jp/sgwr-t/lib/fseek.html