有时候我们的程序把一个文件中的内容清空,然后重新写,比如我最近写的一个性能检测小工具,我需要把检测到的内容写入到一个日志文件,然后将这些日志发送出去,然后我再把新的日志写进来,这时候就遇到一个问题,如果我不把旧的内容清除掉,那么新的内容可能会在原来的内容后面追加,也许会直接覆盖,这取决于你是怎么打开的文件。但是也没有想过如果新的内容长度大于原来的长度,这好说直接覆盖了就可以了,但是如果新的内容长度小于原来的内容长度怎么办?只能覆盖一部分啊,这是不是就有问题了,这时候我们就需要清除文件中的内容了。下面我给大家提供两个清除文件内容的办法
1、使用fopen()函数
FILE *fopen(const char *filename, const char *mode)
fopen是C语言的标准库函数 ,其中参数‘w’:用于创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * fp;
fp = fopen ("file.txt", "w");
fclose(fp);
return(0);
}
2、使用ftruncate()函数
int ftruncate(int fd, off_t length);
ftruncate是系统调用函数,用于设置文件大小,fd就是打开的文件描述符,length就是设置文件长度,我们需要清空文件则设置为0.,使用完记得关闭文件描述符。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
char *name = "test";
//打开文件且拥有可写权限
int fd = open(name,O_CREAT|O_RDWR,0666);
ftruncate(fd,0);
close(fd);
return 0;
}