我现在正在熟悉 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);
}
如果有人可以帮助我或为我指明正确的方向,那就太好了。
最佳答案
您询问如何从文件中删除内容。有两种情况:
如果您希望删除文件中从某个位置到末尾的内容,则可以使用
truncate
或ftruncate
(如果您使用的是 POSIX 系统) 。非 POSIX 系统具有类似的函数来执行此任务,但据我所知,C 标准库中没有任何内容可以截断文件。如果您想删除文件中间的内容,您需要将删除部分后面的文件内容复制到删除部分的顶部。然后您需要将文件截断到新的长度。
作为一个例子来说明这一点:
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/