2011-07-02 18 views
2

ファイル上にcharを書き直すか、いくつかの行を削除する必要があります。ファイル全体を書き直すことなくこれを達成する方法はありますか?ファイルの行を書き直す

例:10行目のchar "8"をchar "4"に変更する必要があります。あなたが特定のオフセットに移動し、そこに記号を書くことができます

int fseek (stream, offset, origin); 

pollo 
ciao fred 
98/98/34 42ddw 
4 
10 
1234567890 
cristo 
ciao liby 
98/98/34 fre42ddw 
8 
20 
123456789
+0

いいえ - ファイルの途中で文字を追加または削除する必要がある場合は、ファイルを書き換えないとできません。「C言語のファイルから行を削除する」(http:// stackoverflow。 com/questions/1151713/delete-a-line-from-a-c-file-in-c-language)や他の多くの言語があります。あなたが現場でキャラクターを置き換えるだけなら、これは可能です。 –

答えて

2

ルック。しかし、置き換えるcharのオフセットを見つけるためには、それの前にすべてのシンボルを読み込む必要があります。

2

文字の位置が正確にわかっている場合は、fseekfputcを使用できます。そうでない場合は、最初にfreadファイルを読み込み、必要な位置を見つけてください。その他のユーティリティー機能については、<stdio.h>を参照してください。

<stdio.h>は、ラインベースではなくバイトベースであることに注意してください。行ベースのメソッドでは、基本的にファイルを書き直す必要があります。

ファイルから行を削除するために、よく、あなたちょうど位置i + [start of the line to be deleted]に位置i + [end of the line to be deleted] + 1からすべての文字を転送することができます。または、全体をバッファーに読み込んでそこの文字を操作します。しかし、このような作業のためには、行ベースの関数がより適切です。

2

つまり、random-access API methodsを使用してファイル内の任意の位置のデータを変更できます。もちろん、OSやファイルシステムがこれをどのように処理するかによって、ファイル全体が書き換えられる可能性があります。

関連する問題