ファイルの特定の行を削除し、その行の特定の部分が指定された文字列と一致するかどうかに基づいて、同じファイルに特定の行を挿入します。一時ファイルを使用せずにコンテンツをコピーするなどの方法がありますか?C言語のファイルから行を削除する
答えて
問題は、ファイルが(基本的に)ディスク上のバイトの配列(または他の物理的な基盤と同じですが、とにかくバイト)であり、 "a"はさまざまなバイト数を取ることができます。行を挿入したり削除したりするには(常に行を厳密に同じ長さの別の行と置き換える場合を除いて)、ファイルの残りの部分をすべて「上に」または「下に」シフトする必要があります...これは非常に厄介な操作です(ファイルの最初に向かって1行の長さを1バイトだけ変更しても、ファイルの残りはギガバイトになる可能性があります)。
そのような操作は信じられないほど厄介なものである可能性があります。したがって、可変長(C、Python、Java、C++、Ruby、または他の言語など)のファイルをサポートするANY言語では、パフォーマンスやリスクに潜在的に影響を与える可能性のあるこのようなコストを本当に支払う必要はほとんどありません(GBやデータの「シフト」中のシステムやディスクのクラッシュがあなたの全体の巨大なファイルの有用性を破壊する可能性があります)。あなたが避けようとしている、完全にシンプルで、適切で、速く、安全で、合理的なテクニックは、基本的にゼロ点があります(それは避けようとしているのですか?
結果ファイルをソースファイル(通常は同じファイルシステム内にある場合はほとんどのシステムのアトミック操作)でmvしたときに、ソースファイルとは異なる結果ファイルを使用します。すべての可能な世界の最高。
ファイルの一部を適切に「切り取る」ことはできません。あなたはいつもどこかに一時的なコピーを作成します。これはCのことではありません。それはどんな言語にも当てはまります。
あなたはファイルをmmapとすることができます。その後、消去したい行が見つかると、その行の後ろのすべてを行頭に置くことができます。私はそれがいかに効率的であろうと疑問に思います。一時ファイルがより速くなる可能性があります。
ファイルがRAM上で処理するのに十分でない場合は、リンクされたリストのノードである各ノードがラインを表すリンクされた文字列リストを使用することができます。 '\ n'必要に応じてリンクされたリストの挿入操作や削除操作を実行し、リンクされたリストを使用して同じファイルを上書きすることができます。
たとえば、mytext。
TXTこれはテストファイル
ラインである
の上に追加する必要があります。この行は、あなたが上記のファイルのリンクリストを作成するときに今
を削除する必要がありますそれはのようになります
[これはテストファイルです] - > [上の行を追加する] - > [この行[> - [これは新しいラインです]> - > [NULL]
挿入操作は[これは]テストファイルである
にリンクされているリストを変更します - ]を削除する必要がありますライン]上に追加する必要があります - > [この行]を削除する必要がある - ] NULL [>
操作は
にリンクされているリストを変更します削除[これはテストファイルです] - > [ティ[新しい行です] - > [上の行を追加する必要があります] - > [NULL]
リンクされたリストをmytext.txtファイルに書き込むことができます。最後に '\ n'すべてのノードの
は、最終的なファイルは、
をmytext.txtされるだろうこれはテストファイルである
これは新しいラインです
ライン
- 1. C言語のParameterInfo配列から要素を削除する
- 2. R言語:xtsオブジェクトから重複行を削除する
- 3. C言語のLinux端末から文字を削除する方法
- 4. C#:文字列から言語固有の記号を削除する
- 5. CSVファイルから空の行や列を削除する - C#
- 6. ファイルから行を削除する
- 7. csvファイルから行を削除する
- 8. ファイルから行を削除する
- 9. Atom-Editor言語パックからsnippitを削除します
- 10. 特定の単語で始まるファイルから行を削除する方法
- 11. Cのファイルから文字を削除
- 12. PowerShell - 単語間のスペースをtxtファイルから削除する
- 13. Googleマップからローカル言語ラベルを削除
- 14. XMLはC言語で削除される
- 15. 単語から順番に母音を削除するC++
- 16. DocumentTermMatrixから単語を削除する
- 17. NSStringから単語を削除する
- 18. C言語、ファイルの構造
- 19. LinuxでC言語の入力ファイルを実行する
- 20. ファイルから2行の間にある行を削除する
- 21. C言語でファイルをアップロードする
- 22. ファイルから特定の単語を削除します。
- 23. C#言語からファイルを読み取る方法
- 24. c#テキストボックスから行を削除し、空白行を削除します
- 25. ファイルから重複する行をすべて削除するC
- 26. powershellを使用してWindows 10から言語を削除する
- 27. C++の言語IDから言語名を取得するには?
- 28. Perlスクリプトが1つのファイルから出力ファイルに単語を削除する
- 29. C言語でCファイルを読む#
- 30. トグル(追加/削除)キーボード言語(1 CMD)
の上に追加する必要があります一時ファイルはたくさん*安全です*。 – RBerteig
これは私の最初の選択ではないでしょう。私が考えることができるのは、その要求を満たすかもしれない唯一のものです。このアプローチは間違いなく安全です(一時的なファイルのアクセス権の問題はありません)。しかし、何らかの障害が発生した場合にファイルが破損することに同意します。 –