基于c中使用ftruncate()前需要fflush(),使用后需要rewind()的深入探讨
使用 基于 需要 深入探讨 fflush rewind
2023-06-13 09:15:00 时间
今天用ftruncate 截断文件,但怎么都不能达到预料的效果,截断后文件中的内容比较杂,而且文件大小也保持原来的.
添加fflush()和rewind()后OK.
以下是测试代码:
复制代码代码如下:
添加
以下是测试代码:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
intmain()
{
FILE*fp;
char*file="tmp";
inti;
intfd;
fp=fopen(file,"w");
if(fp==NULL)
{
printf("fopenfailed\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);
return0;
}
程序运行后,tmp文件的内容为end,大小为4字节.
----------
在调用ftruncate()前用rewind()也行.
但用ftruncate()截断过的文件,在用fread,fwrite拷贝到另外一个文件时,会出现乱码和一些"\0"字符.改用fgets和fputs则正常.
相关文章
- 分子模拟软件amber_[gromacs使用教程] 基于amber力场模拟蛋白小分子复合物
- Typecho教程 - ArticlePoster使用问题综合帖
- 基于Ubuntu 的 Parrot ARDrone 2.0的SDK安装以及ardrone_autonomy和tum_ardrone的安装和使用
- 针对宝塔面板一个站点多个域名使用SSL证书的解决方案
- 【教程】使用ChatGPT制作基于Tkinter的桌面时钟
- 安全人员发现基于.NET平台且使用开源项目的勒索软件详解编程语言
- 使用FTP连接Linux服务器:简单步骤指南(ftp连接linux服务器)
- Oracle 视图 ROLE_SYS_PRIVS 官方解释,作用,如何使用详细说明
- Oracle 视图 USER_FILE_GROUP_VERSIONS 官方解释,作用,如何使用详细说明
- 基于注解的Spring AOP的配置和使用详解编程语言
- MySQL外键的全面使用指南(mysql外键的使用)
- Openfetion是基于GTK+2.0的IM客户端,使用中国移动飞信v4版本协议。
- 快速熟练使用Linux RPM 解压缩(linux rpm解压)
- 如何使用远程Redis服务器(怎么操作远程redis)
- 基于Redis的账户余额安全存储方案(使用redis存余额)
- QPS系统使用Redis打造10万QPS系统(基于redis构建10万)
- 基于Yii框架玩转Redis(在yii中使用redis)
- Redis集群基于Resharding协议的使用介绍(redis集群使用的协议)
- 使用Redis连接工具快速上手(redis连接工具怎么用)
- javascriptArray.prototype.slice使用说明
- 基于jquery的文本框与autocomplete结合使用(asp.net+json)
- 基于dom编程中动态创建与删除元素的使用
- 基于JSP自定义标签使用实例介绍
- 基于Java回顾之多线程同步的使用详解
- 基于jdbc处理Clob的使用介绍