c-如何删除文件中的特定字符串/文件?

c-如何删除文件中的特定字符串/文件?,c,system,virtual,C,System,Virtual,我现在已经熟悉了C语言,在删除另一个文件(系统)中的特定文件或字符串时遇到了一些问题 我所做的实质是构建一个虚拟文件系统,您可以在其中添加、搜索或删除文件 我似乎无法让最后一部分正常工作,谷歌也没有给我任何有用的结果(“如何用c删除文件”) 到目前为止,我得到的是: void deleteFILE(){ FILE *f = fopen ("myfilesystem.nfo", "r+"); if(f == 0) { perror("DANGER"); return; }

我现在已经熟悉了C语言,在删除另一个文件(系统)中的特定文件或字符串时遇到了一些问题

我所做的实质是构建一个虚拟文件系统,您可以在其中添加、搜索或删除文件

我似乎无法让最后一部分正常工作,谷歌也没有给我任何有用的结果(“如何用c删除文件”)

到目前为止,我得到的是:

void deleteFILE(){
FILE *f = fopen ("myfilesystem.nfo", "r+");
if(f == 0) {
    perror("DANGER");
    return;
}
    char *del;
    printf (" You deleted the file: %s", del);
}


如果有人能帮我或给我指出正确的方向,那就太棒了。

你在问如何从文件中删除内容。有两种情况:

  • 如果您希望从文件中的某个点一直删除内容,则如果您使用的是POSIX系统,则可以使用
    truncate
    ftruncate
    。非POSIX系统具有类似的函数来执行此任务,但据我所知,C标准库中没有截断文件的功能

  • 如果要删除文件中间的内容,则需要将已删除部分后面的文件内容复制到已删除部分的顶部。然后需要将文件截断为新的长度

  • 作为澄清此文件的示例:

    Pos: 0123456789 File content: abcdefghij 邮政编码:0123456789 文件内容:abcdefghij 假设您希望删除字节7-9,hij。然后您只需将文件截断为长度为7。这是上面的场景1

    如果希望删除字节2-6,cdefg,则应执行以下操作:

    • 将字节7-9复制到位置2
    • 截断文件,使其长度为5

    检查
    stdio.h.
    中删除
    函数。我完全不知道你在问什么,或者代码的意思。请详细说明。谢谢@Nemanja。我会的。大卫:我正在打开一个文件,想删除这个文件中的特定信息。我也不明白<代码>删除
    用于删除文件,而不是其内容的一部分。更好地解释你想做什么并编辑你的代码。。。