文件操作应用之实现cp指令

具体实现思路

1.打开源文件,判断argc<3,argv[0]为可执行程序的名字,argv[1]为源文件,argv[2]为目标文件。

2.打开需要读取的文件,统计文件大小,将需要读取的文件读入到临时的字符串数组空间。

3.并且创建一个新文件,将读到的数据写入到新创建的文件即可。

4.关闭文件。

需要的函数:
open(); lseek(); read(); write(); close();

具体代码如下:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int argc , char **argv)
{
	int fdScr;
	int fdDec;
	char *readbuf = NULL;
	if(argc < 3)  //判断传入的参数是否正确
	{
		printf("pararm error\n");
		exit(-1);
	}

	fdScr = open(argv[1] , O_RDWR); //以只读的方式打开命令行传过来的第一个文件
	
	int filesize = lseek(fdScr , 0 , SEEK_END); //统计文件大小
	
	printf("file size is : %d \n" , filesize); //打印文件大小
	
	lseek(fdScr , 0 , SEEK_SET); //光标移到文件头
	
	//在堆区开辟一个大小为所读文件大小的内存空>间,用以保存所读到的文件,防止野指针
	readbuf = (char *)malloc(sizeof(char) * filesize + 8);  
	int n_read = read(fdScr , readbuf ,filesize);

	fdDec = open(argv[2] , O_RDWR|O_CREAT|O_TRUNC , 0600);
	int n_write = write(fdDec , readbuf , strlen(readbuf));

	close(fdScr);
	close(fdDec);
	return 0;
}

最后执行
gcc mycp.c -o mycp;
./mycp mycp.c mycpback.c

在终端可以看到所完成拷贝的所有内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值