繁体   English   中英

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

[英]c - How to delete specific strings/files in a file?

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

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

我似乎无法使最后一部分正常工作,并且google没有给我任何可用的结果(“如何在c中删除文件”)。

我到目前为止所得到的:

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

}

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

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

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

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

作为使该文件清晰的示例:

Pos:          0123456789
File content: abcdefghij

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM