C 中的文件处理 - 从文本文件的列表中删除特定单词

Daw*_*ime 2 c file-handling

我正在使用以下代码从我的基本 C 程序中填充一个简短的字典:

void main () {

FILE *fp;

fp = fopen("c:\\CTEMP\\Dictionary2.txt", "w+"); 

fprintf(fp, Word to Dictionary");
Run Code Online (Sandbox Code Playgroud)

但是,我也希望删除某些我不想再出现在字典中的词。我做了一些研究,我知道

" 您不能从文件中删除内容并将剩余内容向下移动。您只能追加、截断或覆盖。

您最好的选择是将文件读入内存,在内存中处理它,然后将其写回磁盘”

如何创建一个没有我想删除的词的新文件?

谢谢

Ric*_*win 5

  • 你打开了两个文件:一个你已经得到的(用于阅读)和一个新的(用于写作)。
  • 您依次循环读取每一行的第一个文件。
  • 您将每一行的内容与需要删除的单词进行比较。
  • 如果该行与任何删除词都不匹配,则将其写入新文件。

如果您需要进行的操作要复杂得多,那么您可以使用 mmap() 从字面上“将其读入内存”,但这是一种更高级的技术;您需要将文件视为没有零终止符的字节数组,并且有很多方法可以将其弄乱。

  • 完成后,您将得到两个文件:旧文件和新文件。您可能想用新文件替换旧文件,但有一种模式可以做到这一点,但并不明显:关闭两个文件后,首先重命名旧文件。然后将新文件重命名为原来的名称,然后删除旧文件。如果您不这样做并且出现问题,您最终可能会丢失所有数据。 (2认同)