Linux C语言实现清除文件中的内容

有时候我们的程序把一个文件中的内容清空,然后重新写,比如我最近写的一个性能检测小工具,我需要把检测到的内容写入到一个日志文件,然后将这些日志发送出去,然后我再把新的日志写进来,这时候就遇到一个问题,如果我不把旧的内容清除掉,那么新的内容可能会在原来的内容后面追加,也许会直接覆盖,这取决于你是怎么打开的文件。但是也没有想过如果新的内容长度大于原来的长度,这好说直接覆盖了就可以了,但是如果新的内容长度小于原来的内容长度怎么办?只能覆盖一部分啊,这是不是就有问题了,这时候我们就需要清除文件中的内容了。下面我给大家提供两个清除文件内容的办法

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;
	}
    原文作者:青湦
    原文地址: https://blog.csdn.net/qq_34934140/article/details/115921183
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞