各位看官们,大家好,上一回中咱们说的是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命令的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。