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


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

看官们,我们在上一章回中通过具体的代码来演示如何DIY cp命令。不过在DIY过程中,我们使用“基于文件描述”的方式来操作文件。这一回中,我们还是以理论结合实践的方式进行,不过,我们使用“基于文件指针”的方式来操作文件。

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

        p_src = fopen(src,"r");
        if(NULL == p_src)
        {
                printf("can't open file :%s \n",src);
                res = 1;
        }

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

        p_des = fopen(des,"w+");
        if(NULL == p_des)
        {
                printf("can't open file :%s \n",des);
                res = 1;
        }

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

        while(0 < (count=fread(buf,sizeof(char),pcount,p_src)) )
        {
                if(ferror(p_src))
                {
                        printf("reading file failed \n");
                        res = 1;
                        break;
                }

                fwrite(buf,sizeof(char),count,p_des);
                if(ferror(p_des))
                {
                        printf("writing files failed \n");
                        res = 1;
                        break;
                }
        }

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

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

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

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

|->cp a b          //这里没有报错,说明我们DIY的cp命令运行成功

在终端中执行以下命令:

cmp a b //没有任何提示,说明文件a和b的内容完全相同。

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

talk_8

真诚赞赏,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值