- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のfopen関数とfseek関数についてお尋ねします。)
C言語のfopen関数とfseek関数について
このQ&Aのポイント
- C言語のfopen関数について、バイナリモードでファイルを書き換える方法と既存のファイルを上書きしてしまう問題について解説します。
- C言語のfseek関数について、ファイルの途中部分を書き換える方法とファイルの全体を知る方法について解説します。
- C言語のfopen関数とfseek関数を使ってファイルの操作を行う際の注意点について解説します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ftell って long int を返すから, 「long int の範囲を超えてしまうような大きさのファイル」だと絶対に不可能です.
その他の回答 (3)
- D-Matsu
- ベストアンサー率45% (1080/2394)
回答No.3
・fopen ファイル途中の「上書き」のみ可能で、「挿入」も「部分削除」も不可能です。 ・fseek 出来る場合出来ない場合があるのは#2で言われている通りですが、ファイルサイズを取るなら普通はfstatかstatを使うのでは。
- jacta
- ベストアンサー率26% (845/3158)
回答No.2
> バイナリモードで開いているときに、ファイルの全体を知りたい時に次のように書いたら間違いなのでしょうか? > fseek(FILE *stream, 0, SEEK_END); > ftell(FILE *stream); 規格上は期待通りの結果が得られることは保証されません。 特定の処理系に限定すれば、うまく動くこともあります(詳しくは処理系のドキュメントを読んでください)。
- mtaka2
- ベストアンサー率73% (867/1179)
回答No.1
> fopen関数について 「rb+」(もしくは「r+b」)で開けば、fseekで指定した既存のファイル内容を書き換えができます。 > fseek関数について 可能です。SEEK_ENDで末尾に移動してから、ftell すれば、ファイルサイズが得られます。