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

作业day3

请使用dup2 + fgets + printf 实现文件拷贝功能、

文件1:

复后文件:

#define BUFFER_SIZE 1024

void file_copy(const char* src_file, const char* dest_file) {
    int src_fd, dest_fd;
    char buffer[BUFFER_SIZE];

    // 打开源文件
    src_fd = open(src_file, O_RDONLY);
    if (src_fd == -1) {
        perror("打开源文件失败");
        exit(EXIT_FAILURE);
    }
    dest_fd = open(dest_file, O_WRONLY | O_CREAT | O_TRUNC, 0644);
    if (dest_fd == -1) {
        close(src_fd);
        perror("打开目标文件失败");
        exit(EXIT_FAILURE);
    }

    // 将标准输入重定向到源文件
    dup2(src_fd, STDIN_FILENO);

    // 将标准输出重定向到目标文件
    dup2(dest_fd, STDOUT_FILENO);
    close(src_fd);
    close(dest_fd);

    // 使用 fgets 和 printf 实现文件拷贝
    while (fgets(buffer, BUFFER_SIZE, stdin)) {
        printf("%s", buffer);
    }

    printf("文件拷贝完成。\n");
}

int main(int argc, const char* argv[]) {
    if (argc != 3) {
        fprintf(stderr, "用法: %s <源文件> <目标文件>\n", argv[0]);
        return EXIT_FAILURE;
    }

    const char* src_file = argv[1];
    const char* dest_file = argv[2];

    file_copy(src_file, dest_file);

    return EXIT_SUCCESS;
}
 

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

相关文章:

  • 第五节 MATLAB命令
  • Oracle 普通用户连接hang住处理方法
  • 理解C++中的右值引用
  • 02-机器学习-核心概念
  • 1.26 实现文件拷贝的功能
  • ES6+新特性,var、let 和 const 的区别
  • HarmonyOS简介:HarmonyOS核心技术理念
  • 嵌入式C语言:结构体对齐
  • 【Rust自学】15.5. Rc<T>:引用计数智能指针与共享所有权
  • 谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计
  • decison tree 决策树
  • GO语言 链表(单向链表
  • Java:初识Java
  • Spring WebSocket 与 STOMP 协议结合实现私聊私信功能
  • 从0到1:C++ 开启游戏开发奇幻之旅(一)
  • 基于Flask的哔哩哔哩综合指数UP榜单数据分析系统的设计与实现
  • 在php中怎么打开OpenSSL
  • oracle 分区表介绍
  • wxwidgets直接获取系统图标,效果类似QFileIconProvider
  • Arduino大师练成手册 -- 控制 PN532 NFC 模块
  • 解决日志中 `NOT NULL constraint failed` 异常的完整指南
  • C动态库的生成与在Python和QT中的调用方法
  • UE求职Demo开发日志#7 强化属性完善
  • Day35:字符串的大小写转换
  • 喜报丨迪捷软件入选2025年浙江省“重点省专”
  • 深度剖析 PyTorch框架:从基础概念到高级应用的深度学习之旅!
  • 基于C++的DPU医疗领域编程初探
  • Linux 执行 fdisk -l 出现 GPT PMBR 大小不符 解决方法
  • 图漾相机搭配VisionPro使用简易教程
  • 第一届“启航杯”网络安全挑战赛WP