时间:2021-05-19
今天用ftruncate截断文件, 但怎么都不能达到预料的效果, 截断后文件中的内容比较杂, 而且文件大小也保持原来的.
添加 fflush() 和 rewind() 后OK.
以下是测试代码:
复制代码 代码如下:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
FILE *fp;
char *file = "tmp";
int i;
int fd;
fp = fopen(file, "w");
if(fp == NULL)
{
printf("fopen failed\n");
return -1;
}
for(i=0; i<1000; i++)
{
fprintf(fp, "%d -- abcedfg \n", i);
}
fflush(fp);
fd = fileno(fp);
if(ftruncate(fd, 0)<0)
{
perror("");
return -1;
}
rewind(fp);
fprintf(fp, "end\n");
fclose(fp);
return 0;
}
程序运行后, tmp 文件的内容为 end , 大小为4字节.
- - - - - - - - - -
在调用 ftruncate() 前用 rewind() 也行.
但用 ftruncate()截断过的文件, 在用 fread, fwrite拷贝到另外一个文件时, 会出现乱码和一些'\0'字符. 改用 fgets 和 fputs 则正常.
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言在这篇文章,我们继续来深入探讨尖括号的更多其它用法。在上一篇文章当中,我们介绍了尖括号()以及它们的一些用法。在这篇文章,我们继续来深入探讨尖括号的更多其它
方法说明:文件内容截取操作。语法:复制代码代码如下:fs.ftruncate(fd,len,[callback(err)])由于该方法属于fs模块,使用前需要引
不久前召开的“2012年全国企业管理创新大会”以“互联网时代的管理变革”为中心议题,深入探讨了信息化、网络化对企
“8.28”大促已经临近,但在大促前的准备工作却远没有停止。之前就大促前期的新品突破和流量策略与卖家进行了深入探讨。今天开淘小编为卖家朋友就大促前的直通车策
1.以ApplocationContext上下文单例模式装配bean为例,深入探讨bean的生命周期:(1).生命周期图:(2).具体事例:person类实现B