当前位置: 首页 > news >正文

C/C++ 移动追加内容到文件尾部。

1、通过C语言文件函数库

1.1、通过追加到尾部字符命令

FILE* f = fopen(file_path.data(), "ab+");

1.2、不通过追加到尾部字符命令

FILE* f = fopen(path, "rb");

if (NULL != f) 
{

fseek(f, 0, SEEK_END);
}

Unix 平台(Linux/Android/MacOS X)

2、通过 Lseek 函数

int fd = open(file_path.data(), O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);

if (fd != -1)

{

  Lseek2(fd, 0, SEEK_END);

}

Impl 

bool Lseek2(int fd, int64_t offset, int whence) noexcept { return Lseek(fd, offset, whence) != -1; }

        int64_t Lseek(int fd, int64_t offset, int whence) noexcept {
            if (fd == -1) {
                return -1;
            }

            whence = std::max<int>(whence, SEEK_SET);

#if defined(__USE_GNU)
#if defined(SEEK_HOLE)
            whence = std::min<int>(whence, SEEK_HOLE);
#elif defined(SEEK_DATA)
            whence = std::min<int>(whence, SEEK_DATA);
#else
            whence = std::min<int>(whence, SEEK_END);
#endif
#else
            whence = std::min<int>(whence, SEEK_END);
#endif

#if defined(_MACOS)
            // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/lseek.2.html
            return lseek(fd, offset, whence);
#else
#if defined(_LARGEFILE64_SOURCE)
            // https://android.googlesource.com/platform/bionic/+/b23f193/libc/unistd/lseek64.c
            int64_t r = lseek64(fd, offset, whence);
            if (r != -1) {
                return r;
            }
#endif
            return lseek(fd, offset, whence);
#endif
        }

http://www.lryc.cn/news/398319.html

相关文章:

  • ISO/OIS的七层模型②
  • 美团到家平台业务探索
  • React -- useState状态更新异步特性——导致获取值为旧值的问题
  • 哪款开放式耳机是2024年最值得购买的?五大品质好物揭秘
  • 深圳天童美语:小暑习俗知多少
  • 递归参数中递增运算符的使用
  • Python功能制作之获取CSDN所有发布文章的对应数据
  • Backend - C# 基础知识
  • HTML5新增的input元素类型:number、range、email、color、date等
  • 00 Debian字符界面如何支持中文
  • 以太网中的各种帧结构
  • C++入门基础题:数组元素逆序(C++版互换方式)
  • 3款自己电脑就可以运行AI LLM的项目
  • 各云厂商取消免费一年期SSL证书
  • 自动化测试高级控件交互方法:TouchAction、触屏操作、点按,双击,滑动,手势解锁!
  • leetcode165.解密数字
  • 对为什么react需要时间分片,vue3不需要的浅学习
  • 电脑干货分享 · 删除资源管理器导航栏 OneDrive 及 3D 对象
  • 无人机之穿越机注意事项篇
  • 防御课第一次作业第一天笔记整理
  • Git协作
  • Three.js机器人与星系动态场景(四):封装Threejs业务组件
  • 亚马逊云科技 Amazon Bedrock 构建 AI 应用体验
  • 程序员标准简历模板
  • 物联网设计竞赛_10_Jetson Nano中文转汉语语音
  • XML Schema 指示器
  • iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索
  • RAG实践:ES混合搜索BM25+kNN(cosine)
  • 论文去AIGC痕迹:避免AI写作被检测的技巧
  • C#使用异步方式调用同步方法的实现方法