【Linux】利用C语言文件流复制单一文件

LinuxC下的复制单一文件与其它语言的没有区别,对于文件操作皆要用到文件流、文件流的缓冲区的概念,可能这就是操作系统中的共性吧!网上对于LinuxC如何复制文件,往往直接用到system("cp 源文件 目标文件"),如此“不负责任”的解决方案,要是别人规定不能用shell脚本呢,必须从C语言的根本解决问题呢?

如下图,用过Linux下的人都知道如何用终端命令复制文件,这里答了等于没答:


再有一部分关于LinuxC文件流关于复制单一文件的记载写得老长老长,没有抓住问题的本质,用了许许多多没有必要的类库。其实LinuxC复制文件就如下代码,能够极其简短地完成关于文件home/pc/A/a复制到home/pc/A/aaa的任务:

#include <stdio.h>
#include <stdlib.h>
int main(){
	char buffer[1024];//设置缓冲区大小
	FILE *in,*out;//定义两个文件流,分别用于文件的读取和写入int len;
	if((in=fopen("/home/pc/A/a","r"))==NULL){//打开源文件的文件流
		printf("源文件不存在,请检查路径输入是否存在!\n");
		exit(1);
	}
	if((out=fopen("/home/pc/A/aaa","w"))==NULL){//打开目标文件的文件流
		printf("创建目标文件流失败!\n");
		exit(1);
	}
	int len;//len为fread读到的字节长
	while((len=fread(buffer,1,1024,in))>0){//从源文件中读取数据并放到缓冲区中,第二个参数1也可以写成sizeof(char)
		fwrite(buffer,1,len,out);//将缓冲区的数据写到目标文件中memset(buffer,0,1024);
	}
	fclose(out);
	fclose(in);
	return 0;
}

相信不用多加解释了,都老套路了,搞两个文件流,对应两个文件,一个用于文件的读,一个用于文件的写,读写之间用一个缓冲区来存放,搞完就关闭这两个文件流,运行结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值