博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以Append方式打开文件,设置偏移量无效
阅读量:5249 次
发布时间:2019-06-14

本文共 1056 字,大约阅读时间需要 3 分钟。

1 #include
2 3 int main() 4 { 5 FILE * fd = fopen("btoo1.c", "ab+"); 6 fpos_t p ; 7 int fp = fgetpos(fd, &p); 8 printf("bef seek: fgetpos = %ld, ftell = %d\n", p, ftell(fd)); 9 fseek(fd, 12, SEEK_SET);10 fgetpos(fd, &p);11 printf("bef seek: fgetpos = %ld, ftell = %d\n", p, ftell(fd));12 fwrite("*****", 1, 5, fd);13 fclose(fd);14 return 0;15 }

 

测试代码如上。现象就是这样,原因未知。

解决方案:

设置临时文件,将偏移量前的内容先写到零时文件内,然后删源文件,再将零时文件重命名。

 

修正:

1 #include
2 #include
3 #include
4 #include
5 6 void main(int argc, char* argv[]){ 7 int hd1 = open("kkkk", O_WRONLY); 8 int seek_num = lseek(hd1, 5, SEEK_SET); 9 int write_byte = write("abc", 1, 3, hd1);10 close(hd1);11 12 FILE *hd2 = fopen("kkkk", "rb+"); 13 seek_num = fseek(hd2, 5, SEEK_SET); 14 write_byte = fwrite("def", 1, 3, hd2); 15 fclose(hd2); 16 }

当需要以写操作并需要seek时,

针对fopen,可以以读方式打开;

针对open,避免使用O_TRUNC模式。

转载于:https://www.cnblogs.com/johnchain/p/3873098.html

你可能感兴趣的文章
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
YUV 格式的视频呈现
查看>>
Android弹出框的学习
查看>>
现代程序设计 作业1
查看>>
在android开发中添加外挂字体
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
Learning-Python【26】:反射及内置方法
查看>>
torch教程[1]用numpy实现三层全连接神经网络
查看>>
java实现哈弗曼树
查看>>
转:Web 测试的创作与调试技术
查看>>
python学习笔记3-列表
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
线程androidAndroid ConditionVariable的用法
查看>>
stap-prep 需要安装那些内核符号
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
socket初识
查看>>
磁盘测试工具
查看>>