2016-05-27 5 views
1

を上書きするtriying:Cファイルは、私はこのコードの頭痛のビットを抱えている

FILE usuaris* 
.... 

usuaris=fopen("usuarisfinal.txt","a+b"); 
fseek(usuaris,(pos-1)*sizeof(Tusuari),SEEK_SET); 
fwrite(&usuaux,sizeof(Tusuari),1,usuaris); 

私は何をしたい位置に「usuaux」「POS」に登録Tusuariを上書きすることで、私はファイルの最後に "usuaux"を追加することになります。私は、モード "a + b"を "r + b"に変更することで、自分が望むことをすることができることを知っていますが、なぜこのように動作させることができないのかわかりません!

P.S.可能性のある間違いをおかけして申し訳ありません、英語は私のための第三言語の一種です!

+0

'a'(追加)'でファイルを開いたので、すべての書き込み操作がファイルに追加されます。それが問題の根源です。 Read + Plusのバイナリ:("r + b")の 'mode'を使うと、次のようになります。1)ファイルを読みたいです。 2)私は現在のファイルの位置指示器でファイルに書き込みたい。 3)私は 'バイナリ'を使ってすべての読み書き操作を実行したい(改行の特別な処理はしない。また、 "write"のために "w + b"を使いたくないと、ファイルが切り捨てられる'fopen()'の間に – user3629249

答えて

3

モード"a+"でファイルを開くと、書き込みは常にファイルの最後に移動します。 (ファイルの最後に書き込む)を読み取ると、追加のための

+オープン:fopenためman pageから

。ファイルが存在しない場合は、 ファイルが作成されます。読み込み用の最初のファイル位置 はファイルの先頭にありますが、の出力は常にファイル末尾に が付加されています。

このモードでファイルを開くとき、オフセットを設定すると読み取りにのみ影響します。だからモード"r+"を使用して、あなたが欲しいものです。

関連する問題