0

我现在正在熟悉 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);

}

如果有人可以帮助我或为我指明正确的方向,那就太棒了。

4

1 回答 1

1

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

  1. 如果您希望从文件中的某个点删除内容直到最后,您可以使用truncate或者ftruncate如果您在 POSIX 系统上。非 POSIX 系统具有类似的功能来执行此任务,但据我所知,C 标准库中没有任何东西可以截断文件。

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

作为一个例子来清除这个文件:

邮政编码:0123456789
文件内容:abcdefghij

假设您希望删除字节 7-9,hij。然后,您只需将文件截断为长度为 7。这是上面的场景 1。

如果您希望删除字节 2-6,cdefg,那么您将执行以下操作:

  • 将字节 7-9 复制到位置 2。
  • 将文件截断为长度为 5。
于 2013-09-24T14:54:18.507 回答