- ベストアンサー
ファイルの入出力
ファイルを入出力モードでopenしたいのですが、それはやはりできませんか? アペンドモードでopenするとして、ファイルの最後から2レコード前までファイルポインタをもっていき、そこから追加書込みすることはできるのでしょうか? できるのであれば、コーディング例を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> ファイルを入出力モードでopenしたいのですが、それはやはりできませんか? どうして「やはり」なんですか? マニュアルに、そのまま書いてあるのに。 読み書きをするには、fopen のモードに "+" をつけます。 fopen(ファイル名, "a+"); あと、C には「レコード」という考え方はありません。あくまでも「バイト」です。 > できるのであれば、コーディング例を教えてください。 こんな感じ。 #include <stdio.h> int main() { FILE *in = fopen(ファイル名, "r+"); fseek(in, -2L * 1レコードのサイズ, SEEK_END); fwrite(データ領域, 1レコードのサイズ, 1, in); /* 適当にデータを書いてね */ fclose(in); return 0; } # 何故、fopen() のモードが a+ じゃないか、って? # 試してみれば分かります
その他の回答 (2)
- toysmith
- ベストアンサー率37% (570/1525)
質問文が"open"なのでopen()を使うと言う前提で。 openであればO_RDWRでオープンすれば「読み書きモード」となります。 アペンドモード(O_APPEND)はファイルポインタをファイル末尾に移動するだけなので後でlseek()することが前提ならアペンドモードを意識する必要はありません。 ファイルポインタの移動はlseek()。
お礼
教えていただき、ありがとうございました。 参考にさせていただきます。
- taknt
- ベストアンサー率19% (1556/7783)
C言語でできるファイル入出力関係のサンプルです。 アペンドモードは追加のみだと思いますが・・・。 C言語というのは、低級言語と呼ばれ、必要な関数は、ある程度は用意されて はいるものの自分で作らないといけない場合が多いです。
お礼
回答をいただき、ありがとうございました。
お礼
私の見たマニュアルには、入出力モードが書いてありませんでした。 教えていただき、ありがとうございます。 早速、試してみます。