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

标签 c system virtual

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

}

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

最佳答案

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

  1. 如果您希望删除文件中从某个位置到末尾的内容,则可以使用 truncateftruncate(如果您使用的是 POSIX 系统) 。非 POSIX 系统具有类似的函数来执行此任务,但据我所知,C 标准库中没有任何内容可以截断文件。

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

作为一个例子来说明这一点:

Pos:          0123456789
File content: abcdefghij

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

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

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

关于c - 如何删除文件中的特定字符串/文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984787/

相关文章:

c - 从 C 中的系统命令启动的进程继承父 fd 的

php系统、python和utf-8

c# - 方法创建困境

c - 为什么输出与 %f 参数不同?

C++ 静态虚拟成员?

c# - 虚拟成员是否通过反射调用(在正常情况下)?

c++ - 使用运算符重载调用虚函数

C 程序在程序结束时返回随机字符? (最后一个功能)

c - 如何实现我的变位词和回文函数来检查用户输入的单词?

c - 对字符串的子集使用 strcmp