• ベストアンサー

ファイルの入出力

ファイルを入出力モードでopenしたいのですが、それはやはりできませんか? アペンドモードでopenするとして、ファイルの最後から2レコード前までファイルポインタをもっていき、そこから追加書込みすることはできるのでしょうか? できるのであれば、コーディング例を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> ファイルを入出力モードで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+ じゃないか、って? # 試してみれば分かります

arisa5
質問者

お礼

私の見たマニュアルには、入出力モードが書いてありませんでした。 教えていただき、ありがとうございます。 早速、試してみます。

その他の回答 (2)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.3

質問文が"open"なのでopen()を使うと言う前提で。 openであればO_RDWRでオープンすれば「読み書きモード」となります。 アペンドモード(O_APPEND)はファイルポインタをファイル末尾に移動するだけなので後でlseek()することが前提ならアペンドモードを意識する必要はありません。 ファイルポインタの移動はlseek()。

arisa5
質問者

お礼

教えていただき、ありがとうございました。 参考にさせていただきます。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

C言語でできるファイル入出力関係のサンプルです。 アペンドモードは追加のみだと思いますが・・・。 C言語というのは、低級言語と呼ばれ、必要な関数は、ある程度は用意されて はいるものの自分で作らないといけない場合が多いです。

参考URL:
http://x68000.startshop.co.jp/~68user/net/c-open.html
arisa5
質問者

お礼

回答をいただき、ありがとうございました。