ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

ファイルのオープンとクローズの関数

いつもコピペでテストベンチを書いていたので、いまさらながら調べてみました。

$fopen

書式:$fopen("file_name", file_type)
ファイルを開く。32bitのmultichannel descriptor か32bitのfile descriptorを返すので、integerで受け取る。32bitのMSBは予約され、常にset(1)が推奨される。STDIN、SDTOUT、STDERRの3つのfile descriptorは、pre-openされており、それぞれ0x8000_0001、0x8000_0002、0x8000_0003の値を持っている。

veritakでもこの1行でメッセージを表示できる。

$fwrite(32'h8000_0003, "Hello world");

file_typeは以下の値を取る。省略時はw指定と同じ。+は読み書きを可能にし、bはバイナリモードの指定を行う。"w"、"w+"はファイルを開いた時点でファイルサイズが0になるので注意する。

file_type decscirtion
"r" or "rb" 読み出し専用
"w" or "wb" 書き込み専用
"a" or "ab" ファイルの最後に追加する。もしくは書き込み専用でファイルを作成する
"r+", "r+b" or "rb+" 読み書き(for update)
"w+", "w+b" or "wb+" 読み書き(for update)
"a+", "a+b" or "ab+" 読み出しと追記(for update)
"r+"と"w+"の違い。

ファイルが存在しなかったとき、"r+"は0を返し、"w+"は新しいファイルを作る。

"w+"と"a+"の違い

"a+"はファイルの最後にしか追加が出来ない。

$fclose

書式:$fclose(mcd) or $fclose(fc)
ファイルを閉じる。
引数は、fopenの戻り値であるmultichannel descriptorかfile descriptorを指定する。