C/C++ codeint fd, tmpfd, ret;

fd = open("qqq", O_RDWR | O_CREAT, 0644);

if (fd < 0)

{

printf("error!\n"); return 0;

}

tmpfd = fileno(tmpfile()); // 创建临时文件并返回临时文件的文件描述符

if(tmpfd < 0){

printf("create temp file error!\n"); return 0;

}

ret = write(tmpfd, buf, strlen(buf)); // 将准备写入文件的数据先写到临时文件中

if (ret < 0)

{

printf("write error!\n"); return 0;

}

if (lseek(fd, 0, SEEK_SET) == -1) // 把文件读写指针移动到文件开头

{

printf("lseek error!\n"); return 0;

}

do{ // 将剩余的数据先从原文件中拷贝出来到临时文件中

ret = read(fd, buf, sizeof(buf)); // 先将数据从原文件中读出

if (ret < 0)

{

printf("read error!\n"); return 0;

}

if (write(tmpfd, buf, ret) != ret) // 写入到临时文件中

{

printf("write error!\n"); return 0;

}

}while(ret > 0);

if (lseek(tmpfd, 0, SEEK_SET) == -1) // 把临时文件读写指针移动到文件开头

{

printf("lseek error!\n"); return 0;

}

if (ftruncate(fd, 0) == -1) // 把原文件内容清除

{

printf("ftruncate error!\n"); return 0;

}

if (lseek(fd, 0, SEEK_SET) == -1) // 把临时文件读写指针移动到文件开头

{

printf("lseek error!\n"); return 0;

}

do{ // 将新加数据+原有数据拷贝到原来的文件中

ret = read(tmpfd, buf, sizeof(buf)); // 先将数据从临时文件中读出

if (ret < 0)

{

printf("read error!\n"); return 0;

}

if (write(fd, buf, ret) != ret) // 写入到原文件中

{

printf("write error!\n"); return 0;

}

}while(ret > 0);

close(tmpfd);

c语言中lseek函数,lseek函数解决方法相关推荐

  1. C 语言中 char[] 的操作函数

    C语言中char[]的操作函数 1.赋值操作 在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women"; char ...

  2. c语言printf函数的作用,c语言中printf用法及其函数定义

    c语言中printf用法及其函数定义 发布时间:2020-04-09 10:51:14 来源:亿速云 阅读:354 作者:小新 今天小编给大家分享的是c语言中printf用法及其函数定义,很多人都不太 ...

  3. Button中command后面函数添加参数解决方法

    Button中command后面函数添加参数解决方法 参考文章: (1)Button中command后面函数添加参数解决方法 (2)https://www.cnblogs.com/smart-ziha ...

  4. php war,PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法

    本文实例讲述了PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法.分享给大家供大家参考.具体分析如下: 今天在一朋友服务器测试一个网站时发现我在测试ph ...

  5. VS使用scanf函数报错解决方法

    VS使用scanf函数报错解决方法 首先来看一段很简单的C语言代码 #include<stdio.h> int main(void) {char s[10];scanf("%s& ...

  6. laravel5.5 __construct函数 无法使用session() 解决方法和实例

    laravel5.5 __construct函数 无法使用session() 解决方法和实例 参考文章: (1)laravel5.5 __construct函数 无法使用session() 解决方法和 ...

  7. Oracle中wm_concat函数报错解决方法

    Oracle中wm_concat函数报错解决方法 参考文章: (1)Oracle中wm_concat函数报错解决方法 (2)https://www.cnblogs.com/52net/archive/ ...

  8. 关于VS Code中C文件调用其他C文件函数失败的解决方法

    关于VS Code中C文件调用其他C文件函数失败的解决方法 在main.c文件中添加 #include <windows.h> 头文件,可以解决.

  9. 微信小程序JSjavascript中的Math.pow()函数负数开立方解决方法

    微信小程序JSjavascript中的Math.pow()函数负数开立方解决方法 Math.pow()函数是不能负数开立方的,会返回Null,因为对于计算机而言,负数开三次方是一个复数(实际上负数开三 ...

  10. php fopen函数 返回值,php中fopen函数失败的解决方法

    php中fopen函数失败的解决方法 发布时间:2021-03-29 12:26:30 来源:亿速云 阅读:86 作者:小新 这篇文章将为大家详细讲解有关php中fopen函数失败的解决方法,小编觉得 ...

最新文章

  1. 当Swin Transformer遇上DCN,效果惊人!
  2. SAP Backgroud job
  3. wincc 报警记录 mysql_wincc查询历史报警记录,归档数据-工业支持中心-西门子中国...
  4. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
  5. 键盘改键软件_一秒五键,一键三招,万种光污染,杜伽K310樱桃轴机械键盘感受...
  6. Java笔记-AES加解密(PKCS7padding可用)
  7. SQL语法集锦一:SQL语句实现表的横向聚合
  8. 人脸对齐(七)--JDA算法
  9. CnOpenData中国高等学校名单数据
  10. 树莓派3 串口 / 模拟串口
  11. 飞机大战源码php,飞机大战源码 - 丁小未的个人页面 - OSCHINA - 中文开源技术交流社区...
  12. 世上最伟大的十个公式,薛定谔方程排名第六,质能方程排名第五
  13. 关于java变量命名,介绍阿里JAVA命名规范及IDEA实时检测插件的使用以及CODELF取名神器
  14. 升阳云ERP,基于开源框架设计的三大特点
  15. 虚拟机中左键不能使用,鼠标滑轮和右键正常-解决方案
  16. Java整点报时定时器
  17. 商品库存周转率详解及计算方式
  18. 如何实现erp外网连接?
  19. 计算机剪切文件保存在哪里,电脑剪切的文件怎么恢复
  20. 仙剑五手游服务器维护,新仙剑奇侠传游戏进不去怎么办 游戏进不去解决方法...

热门文章

  1. 使用for循环输出一个倒三角形。
  2. P1644 跳马问题
  3. 使用 Nextcloud 搭建私人云盘,并利用内网穿透实现公网远程访问
  4. Android技术栈--HashMap和ArrayMap源码解析
  5. 虚拟人都能导购了,还要实体导购干什么?
  6. 图片预加载与addLoadEvent
  7. 产品经理精通Axure工具篇
  8. 陈天桥或未完全退出盛大游戏
  9. CAJ论文免费转换成word文档?如何操作
  10. win10 解决.net framework 3.5 安装报错 0x800F0954问题