Index 目次
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が発生することがある。この辺の話もいずれ書く予定。