在c语言中清掉上一行的,如何在c语言中清空文件里的内容?

对一个文件用读写方式打开 fopen("...", "r+");首先读出文件里面的(9php.com)内容,处理完成后需要重新写入文件中。在重新写入的(9php.com)时候需要先清空原来文件里面的(9php.com)内容,如何实现此处的(9php.com)清空?

ps:原来使用先以读方式打开,读入缓冲后关闭文件,然后再以写打开,这样做两遍打开关闭,太浪费时间。

2008-8-14 14:40xi2008wang

ftruncate

2008-8-14 14:40happy_fish100

回复 #1 lukeden 的(9php.com)帖子

使用ftruncate可以清空文件,如:ftruncate(fileno(fp), 0);

#include

int ftruncate(int fildes, off_t length);

清空文件后,需要使用rewind或fseek将文件指针移到文件头。

2008-8-14 14:42yecheng_110

ftruncate

2008-8-14 14:42yecheng_110

LS上的(9php.com)两位好快:mrgreen:

居然到了4L:mrgreen:

2008-8-14 15:05lukeden

非常感谢楼上各位!!

在APUE上我看到这个函数,知道有这嚒个函数。我现在在win下,所以想找个C/C++的(9php.com)这样功能的(9php.com)函数

2008-8-14 16:49qliu00

以写的(9php.com)方式打开 写入空字符串:)

这样应该理论上可以的(9php.com)

2008-8-14 17:08jieao111

使用rewind或fseek将文件指针移到文件头

然后写进的(9php.com)就会自动覆盖

2008-8-14 18:00lukeden

原帖由 jieao111 于 2008-8-14 17:08 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=9057757&ptid=1243088][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

使用rewind或fseek将文件指针移到文件头

然后写进的(9php.com)就会自动覆盖 [/quote]

这样是可以覆盖了。但是后面没有被覆盖的(9php.com)部分依然存在! 如果原来的(9php.com)文件长度大于新写入的(9php.com)内容的(9php.com)长度, 后面的(9php.com)部分就覆盖不了

2008-8-14 18:25jieao111

回复 #9 lukeden 的(9php.com)帖子

你试过了吗,把代码发出来

2008-8-14 21:16lukeden

[quote]原帖由 jieao111 于 2008-8-14 18:25 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=9058389&ptid=1243088][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

你试过了吗,把代码发出来

试过了,确实存在这样的(9php.com)问题。一下是我的(9php.com)部分代码

FILE *fp = fopen(filepath, "r");        //        打开要处理的(9php.com)文件

if (fp == NULL)

{

printf("open file : %s error\t",filepath);

perror("because:");

return false;

}

if (NULL == read_file(fp, _buf))        // 读入文件到缓冲中

{

fclose(fp);

return false;

}

//过滤非正常文本

int size = filter_text(_buf, _buf);

//讲过滤后的(9php.com)文本写入原来文件,即更新文本内容

fseek(fp, 0L, SEEK_SET);

fwrite(_buf, 1, size, fp);

fclose(fp);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值