この問題に対するよくある解決策です。下に行くほど手間ですが大きなデータが扱えるようになります。 1.ファイルが小さければ、全部配列に読み込んで、必要な操作を行ったあと同じファイル名で書き出す 2.ファイル名を変更してバックアップファイルとする作る。 バックアップを読み込み専用で開き、元のファイル名で新しいファイルを書き込みモードwで開く。 1行ずつfgetsで読み込み、ファイルにfputsで書き出す。 操作したい行が来たらその操作を行って同様にファイルに書き出す。 残りを全部書き出しす。 全部成功したらバックアップを削除する。エラーが起きたら編集中のファイルは削除してバックアップを元のファイル名にする 3.1行の長さを決まった長さにして(いわゆる固定長レコード)r+モードでfopenし、レコード長xレコード数で目的の場所にfseekして特定のレコードをfread/fwriteで上書きする。
![ファイル書込みで一行もしくは部分的に上書きする](https://cdn-ak-scissors.b.st-hatena.com/image/square/2217b5f8fd432f1f8e24e3387bf58ef8f86ddb50/height=288;version=1;width=512/https%3A%2F%2Foshiete.xgoo.jp%2Fimages%2Fsp%2Fqa_recommend%2F2101_4.jpg)