1. 实现文件的拷贝,并加入命令行参数

#include <stdio.h>       // 标准输入输出库
#include <string.h>      // 字符串操作库
#include <stdlib.h>      // 常用函数库
#include <strings.h>     // 字符串操作库(不推荐使用,建议使用<string.h>)
#include <sys/types.h>   // 系统数据类型定义
#include <sys/stat.h>    // 文件状态信息库
#include <fcntl.h>       // 文件控制库
#include <unistd.h>      // POSIX 操作系统 API

int main(int argc, char *argv[]) {    // 主函数,接收命令行参数

    // 检查命令行参数是否正确,如果不正确则打印程序名称并返回错误码
    if(argc != 3) {
        printf("%s\n", argv[0]);     // 打印程序名称
        return -1;                    // 返回错误码 -1
    }

    // 打开源文件,以只读方式打开
    int src_fd = open(argv[1], O_RDONLY);
    // 检查源文件是否成功打开,如果打开失败则打印错误信息并返回错误码
    if(src_fd < 0) {
        perror("open srcfile");       // 打印错误信息
        return -1;                    // 返回错误码 -1
    }

    // 打开目标文件,如果不存在则创建,如果存在则清空其内容,以写入方式打开
    int dest_fd = open(argv[2], O_TRUNC | O_CREAT | O_WRONLY, 0666);
    // 检查目标文件是否成功打开,如果打开失败则打印错误信息并返回错误码
    if(dest_fd < 0) {
        perror("open src_dest");      // 打印错误信息
        return -1;                    // 返回错误码 -1
    }

    char buf[32] = {0};   // 定义一个长度为 32 的字符缓冲区

    // 循环读取源文件的内容并写入目标文件
    while(1) {
        int ret = read(src_fd, buf, sizeof(buf));   // 从源文件中读取内容到缓冲区中
        // 检查读取操作是否出错,如果出错则打印错误信息并返回错误码
        if(ret < 0) {
            perror("read");            // 打印错误信息
            return -1;                // 返回错误码 -1
        }
        // 如果读取到文件末尾,则跳出循环
        else if(ret == 0) {
            break;                    // 跳出循环
        }
        // 将从源文件中读取的内容写入目标文件
        write(dest_fd, buf, ret);     // 将缓冲区中的内容写入目标文件
    }

    // 关闭源文件和目标文件
    close(src_fd);       // 关闭源文件
    close(dest_fd);      // 关闭目标文件

    return 0;            // 返回正常结束码 0
}
  1. 编译程序
    打开终端,并进入到包含你的源文件 test1.c 的目录中。然后使用 gcc 命令来编译你的程序:

    gcc test1.c -o copyfile
    

    这会生成一个名为 copyfile 的可执行文件。

  2. 运行程序
    确保你的源文件 text.txt 存在于同一个目录中。然后在终端中运行编译后的可执行文件,并指定源文件和目标文件的名称:

    ./copyfile text.txt destination.txt
    

    这样做将会将 text.txt 文件的内容复制到 destination.txt 文件中。

如果你没有使用 -o 选项来命名输出,你可以使用默认生成的可执行文件名 a.out,运行方式如下:

./a.out text.txt destination.txt

确保 text.txt 存在于你的工作目录中,否则你需要提供正确的路径。同时,destination.txt 将会被创建或覆盖,所以确保你有权限进行写入操作。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式石油工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值