前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows下dos中 copy命令的实现

Windows下dos中 copy命令的实现

作者头像
全栈程序员站长
发布2022-09-09 10:12:04
9750
发布2022-09-09 10:12:04
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

实现的的功能:复制文件功能

一:功能分析

1.1windows 系统下的 dos命令中 指令 copy 能实现文件的复制。

比如: copy log.txt log1.txt 就是将log.txt 文件复制一份,复制后的文件名称为 log1.txt 图例:

在这里插入图片描述
在这里插入图片描述
1.2copy命令实现要求:

自己创造一个命令,比如:test.exe log.txt test.bak 有三个参数,第一个参数是模拟实现的copy的可执行程序,第二个参数要拷贝的文件名称,第三个文件是拷贝后的文件名称。

1.3思路分析:
  1. copy命令 由我们写的程序来实现
  2. 要拷贝的文件名称以及拷贝后的名称,由程序自动获取和输出,不用自己输入。可以利用main函数的参数列表 来实现这个功能
  3. 复制过程 就是打开文件A,将文件A中的内容逐字节写到文件B中。 总结一下:核心内容就两点,main函数的参数列表的使用 和 文件的读写操作

二:实现代码:

代码语言:javascript
复制
int main(int argc,char* argv[], char* envp[])
{
	FILE *fRead = NULL;
	FILE *fWrite = NULL;
	FILE *tmp = NULL;
	char ch ;
	//命令行参数 只有三个
	if (argc != 3)
	{
		//perror("orders are wrong");
		//exit(EXIT_FAILURE);
		printf("参数有误");
		return 0;
	}
	
	tmp = fopen(argv[1], "r");
	if (tmp == NULL)
	{
		perror("open file for read failed:");
		exit(EXIT_FAILURE);
	}
	fRead = tmp;

	//打开要写的文件
	tmp = fopen(argv[2],"w");
	if (tmp == NULL)
	{
		//先关闭已经打开的文件
		fclose(tmp);
		tmp = NULL;
		perror("open file for write failed:");
		exit(EXIT_FAILURE);
	}
	fWrite = tmp;

	//拷贝过程
	while ( (ch = fgetc(fRead)) != EOF)
	{
		//逐字符写入文件
		fputc(ch,fWrite);
	}

	//关闭文件
	fclose(fRead);
	fRead = NULL;
	fclose(fWrite);
	fWrite = NULL;
	system("pause");
	return 0;
}

运行结果:打开复制后的文件,与原文件一样。

在这里插入图片描述
在这里插入图片描述

补充:main函数的参数列表介绍

main( int argc, char *argv[ ], char *envp[ ] ) { program-statements }

  • int argc:argc是整型变量,表示命令行参数的个数(argc 包含可执行程序名称在内,还包括参数在内)
  • char *argv[ ]:字符指针数组,每个元素是字符指针,指向一个字符串,这些字符串就是命令行中的每一个参数(字符串);
  • char *envp[ ]:字符指针数组,每一个字符指针指向一个环境变量(字符串);
在这里插入图片描述
在这里插入图片描述

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161264.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现的的功能:复制文件功能
    • 一:功能分析
      • 二:实现代码:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档