嗨,大家好我有一个被称为dictionary.txt的文本文件。基本上我做了两个选择的菜单,1.添加新单词到字典和2.从字典中删除单词。现在我设法做菜单并添加新单词。但是,我坚持从文件中删除。我希望当用户输入例如“跑步者”时,该词将在dictionary.txt中搜索并被删除。为了告诉你我在学校还没有完成的一切,但我正在寻找一些想法,以便我可以继续完成这项任务。我已经尝试了一些东西,但正如我已经告诉过你的,我还没有覆盖它,所以我不知道如何去做。我感谢所有的帮助。下面是我的程序。如何从文本文件中删除?
回答
- 你打开两个文件:你得到的一个(阅读)和一个新的(写作)。
- 循环读取每行的第一个文件。
- 您可以将每行的内容与您需要删除的单词进行比较。
- 如果该行与任何删除词不匹配,则将其写入新文件。
Josuel,由理查德·厄尔文从我前面回答的问题采取
您可以使用下面的代码:
#include <stdio.h>
int main()
{
FILE *fileptr1, *fileptr2;
char filename[40];
char ch;
int delete_line, temp = 1;
printf("Enter file name: ");
scanf("%s", filename);
//open file in read mode
fileptr1 = fopen("c:\\CTEMP\\Dictionary.txt", "r");
ch = getc(fileptr1);
while (ch != EOF)
{
printf("%c", ch);
ch = getc(fileptr1);
}
//rewind
rewind(fileptr1);
printf(" \n Enter line number of the line to be deleted:");
scanf("%d", &delete_line);
//open new file in write mode
fileptr2 = fopen("replica.c", "w");
ch = getc(fileptr1);
while (ch != EOF)
{
ch = getc(fileptr1);
if (ch == '\n')
{
temp++;
}
//except the line to be deleted
if (temp != delete_line)
{
//copy all lines in file replica.c
putc(ch, fileptr2);
}
}
fclose(fileptr1);
fclose(fileptr2);
remove("c:\\CTEMP\\Dictionary.txt");
//rename the file replica.c to original name
rename("replica.c", "c:\\CTEMP\\Dictionary.txt");
printf("\n The contents of file after being modified are as follows:\n");
fileptr1 = fopen("c:\\CTEMP\\Dictionary.txt", "r");
ch = getc(fileptr1);
while (ch != EOF)
{
printf("%c", ch);
ch = getc(fileptr1);
}
fclose(fileptr1);
scanf_s("%d");
return 0;
}
你可以以二进制方式打开该文件,然后将内容加载到一个字符串或字符串数组,然后做字符串检索/删除/编辑然后清除文件的内容,并在最后你写该文件的新内容。
感谢您的回复,但我正在寻找更简单的东西。 –
@JosuelSpiteri这是大多数文件编辑完成。你阅读整个内容;将其存储在内存中;操纵它;并再次将**新内容传送到文件中。 – mr5
或者你应该尝试SQL。它需要关心操作文件内容,但需要额外的库。这种方式比建议的更复杂 – user5821508
没有办法删除一个文件的东西。文件系统不支持它。
那如何修改该文件的内容:
- 删除整个文件内容(无论何时打开用于写入的文件,它发生在默认情况下)
- 删除文件本身
- 重写一些一个文件的一部分,由相同的字节数
- 追加到文件的末尾更换几个字节
因此,要删除单词,您应该将整个文件读入内存,删除该单词,然后重写它,或者用空格(或任何其他字符)替换该单词。
- 1. 如何从“/”文本中删除文本?
- 2. 从文本文件中删除文本
- 3. 从文本文件中删除文本
- 4. 如何从VB6的文本文件中删除一行文本?
- 5. 删除从文本文件
- 6. 从文件中删除文件版本
- 7. PS - 如何从文本文件中删除文件名条目
- 8. 如何删除“ - ”从文本
- 9. Bash脚本 - 如何从文本文件中删除行/单词?
- 10. 如何从已删除的文件中删除脚本
- 11. 从文本文件中删除名称
- 12. 从文件中删除文本
- 13. 从文本文件中删除网址
- 14. Powershell - 从文本文件中删除行
- 15. 从文件中删除标记文本
- 16. 从文本文件中删除一行?
- 17. 从文本文件中删除%符号
- 18. 从文本文件中删除回车
- 19. 从文本文件中删除一行
- 20. 从多个文件中删除文本
- 21. 从文本文件中删除^ M
- 22. 从文本文件中删除行
- 23. 从文本文件中删除多行
- 24. 从from.txt文件中删除文本行
- 25. 如何从R中的文本文件中删除空行?
- 26. 如何从C#中的文本文件中删除空行#
- 27. 如何从Python中的文本文件中删除行?
- 28. 如何从java中的文本文件中删除空行
- 29. 如何从图像中删除文本
- 30. 如何从文本中删除撇号?
您无法在文件的开始,中间或结尾处按某个按钮,某处并删除某些内容。您必须阅读文件的现有内容,并创建一个新文件,而不删除部分。 –
为什么downvote?在这个问题上我没有发现任何奇怪的东西。 –
@SamVarshavchik是的,我意识到这一点。我看到有一个函数fgets()可用于从文本文件读取一行并将其存储到指向的字符串中。然而,我不知道我将如何应用它。因为我想将其替换为没有任何内容的字符串,因为我想删除它。 –