一起talk C栗子吧(第一百九十八回:C语言实例--DIY cp命令二)


各位看官们,大家好,上一回中咱们说的是DIY cp命令的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们在上一章回中介绍了DIY cp命令的步骤以及相关的注意事项,这一回中我们将通过具体的代码来演示如何DIY cp命令。也就是通常说的理论结合实践。在DIY过程中,我们使用“基于文件描述”的方式来操作文件。

1.打开源文件,以便从源文件中读取内容;

    fd_src = open(src,O_RDONLY);
    if(fd_src == -1)
    {
        printf("can't open file :%s \n",src);
        res = 1;
    }

2.打开目的文件,以便向目的文件中写入内容;

    fd_des = open(des,O_WRONLY|O_CREAT,S_IRWXU|S_IRGRP|S_IROTH); //creat a file wiht 744 permision
    if(fd_des == -1)
    {
        printf("can't open file :%s \n",des);
        res = 1;
    }

3.从源文件中读取内容,每次读取BUFSIZ个字节;
4.把步骤3中读取的内容写入到目的文件中,每次写入BUFSIZ个字节;
5.反复进行步骤3和步骤4,直到源文件中没有内容为止;

while(0 != (count=read(fd_src,buf,BUFSIZ)) )
    {
        if(-1 == count)
        {
            printf("reading file failed \n");
            res = 1;
            break;
        }

        if(count != write(fd_des,buf,count) )
        {
            printf("writing files failed \n");
            res = 1;
            break;
        }
    }

6.分别关闭源文件和目的文件;

    if(-1 == close(fd_src) )
    {
        printf("close file: %s failed \n",src);
        res = 1;
    }

    if(-1 == close(fd_des) )
    {
        printf("close file: %s failed \n",des);
        res = 1;
    }

把源文件进行保存,然后编译成目标文件,下面是目标文件运行的结果:

|->cp a b          //这里没有报错,说明我们DIY的cp命令运行成功
在终端中执行以下命令:
cmp a b //没有任何提示,说明文件a和b的内容完全相同。

看官们,以上是核心代码,完整的代码放到了我的资源中,大家可以点击这里下载使用。

各位看官,关于DIY cp命令的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

talk_8

真诚赞赏,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值