C语言如何清空一个文件的例子

/*********************************************************************
 * Author  : Samson
 * Date    : 02/12/2015
 * Test platform:
 *              3.13.0-24-generic
 *              GNU bash, 4.3.11(1)-release
 * *******************************************************************/

如何使用C语言使一个文件的内容直接就清空了呢?

答案就在如下的程序代码中:

#include <stdio.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#define PATHNAME "./test"

int main()

{

int ret = open(PATHNAME, O_WRONLY | O_TRUNC);

if(ret == -1)

{

printf("open file is fail!\n");

return -1;

}

close(ret);

return 0;

}

在当前目录下有一个文件名为test的文件,使用ll命令查看一下文件的大小:

[email protected]:/tmp$ ll test

-rw-r--r-- 1 ufo ufo 293  2月 12 17:05 test

[email protected]:/tmp$ gcc testwrite.c

[email protected]:/tmp$ ./a.out

执行后再查看test文件的大小,即已经为0了,使用cat test也是没有内容显示的了。

[email protected]:/tmp$ ll test

-rw-r--r-- 1 ufo ufo 0  2月 12 17:05 test

关键在于open函数中的oflag参数,使用man 2 open可以查看到open函数的说明,

O_WRONLY:表示以只写打开文件

O_TRUNC:表示如果open中的参数文件名为pathname的文件存在的话,且为只写或读写成功打开的话,则将其长度截智短为0。也就达到了清空文件内容的目的了。

时间: 2024-10-06 18:45:01

C语言如何清空一个文件的例子的相关文章

linux中如何清空一个文件的内容

方法1: echo "" > /www.jbxue.com /xxx.log 方法2: echo "" >> /www.jbxue.com /xxx.log 方法3: 此命令能与“echo > /var/log/big.log”达到相同效果,不过,命令执行后,需要用“Ctrl + d”结束 方法4: clear > /opt/log/big.log 此命令会把big.log文件内容清空,而不删除文件 方法5: 同样的效果,用true.f

用C语言实现统计一个文件夹中各种文件的比例

<UNIX环境高级编程>中的程序清单4-7就介绍了如何实现递归地统计某个目录下面的文件!我刚开始看过它的代码后,觉得照着敲太没意思了,所以就合上书自己写了一遍!为此还写了一篇博文,这是博文地址:在linux下用C语言实现递归查看某个目录中的所有文件[CSDN]! 今天做<Unix环境高级编程>的课后题,看到题目4.11这里提供了一种新的实现这个程序的思路,那就是每回读到一个目录,就通过chdir函数进入到这个目录,然后再通过opendir函数和readdir函数来读取这个目录中的文

linux中合并多个文件内容到一个文件的例子

尊敬的用户您好,从即日起 导入 及 导出 功能已经下线,请到阿里云官方数据库管理平台 iDB Cloud 使用该功能! 继续在 iDB Cloud 中发现导出的数据库文件是按照每个表生成的SQL文件,这么多单独的文件再导入到其他数据库中是个麻烦事,需要将所有的SQL文件合并为一个完整的SQL文件.有了这个思路,决定寻找方法来实现. Windows 中实现合并多个文件内容到一个文件中 代码如下 复制代码 (www.111cn.net)copy *.sql MERGE.sql Linux 或 类Un

删除一个文件或清空一个文件夹

function delfile($filename){ if (!file_exists($filename)) { return; } if (!is_dir($filename)) { unlink($filename); return; } if (($handle = opendir($filename))) { while (($item = readdir($handle))) { if ($item != "." && $item != "..

夺命雷公狗C/C++-----8---打开一个文件

提示:在c语言中\\两个斜杠代表着一个 \  斜杠而已噢,很多新人朋友都会在这里出现道问题噢 其实我们还可以通过c语言来打开一个文件噢,比如我们打开一个记事本来玩玩 #include <stdio.h> #include <windows.h> void main() { ShellExecute(0,"open","D:\\test.txt",0,0,1); /* ShellExecute( hWnd: HWND; {指定父窗口句柄} Op

【C语言】通讯录代码(一个文件下实现)

//[C语言]通讯录(一个文件实现) #include <stdio.h> #include <string.h> #define NAME_MAX 20 #define SEX_MAX 5 #define TEL_MAX 11 #define ADDR_MAX 20 #define PERSON_MAX 1000 typedef struct person { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tel[TE

C语言笔记之头文件与链接(一)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:18px;">虽然一直在用#include命令包含头文件,但其实一致不太明白头文件的原理.今天就研究了一下.</span></span> 首先,在大型项目中,仅仅一个源文件是不够的,巨大

C语言缓冲区清空

C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 char *fgets(char * restrict s, int n, FILE * restrict stream); char *gets(char *s);//可能导致溢出,用fgets代替之. //格式化输入系列 int fscanf(FILE * restrict stream, co

C语言怎么写头文件?

C语言中.h和.c文件解析(很精彩)   简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件)