Windows下dos中 copy命令的实现

Windows下dos中 copy命令的实现实现的的功能:复制文件功能一:功能分析1.1windows系统下的dos命令中指令copy能实现文件的复制。比如:copylog.txtlog1.txt就是将log.txt文件复制一份,复制后的文件名称为log1.txt图例:1.2copy命令实现要求:自己创造一个命令,比如:test.exelog.txttest.bak有三个参数,第一个参…

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

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

一:功能分析

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函数的参数列表的使用 和 文件的读写操作

二:实现代码:

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.net/161264.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月18日 上午9:00
下一篇 2022年7月18日 上午9:00


相关推荐

  • ftp镜像下载

    ftp镜像下载

    2022年3月8日
    45
  • 爬取异步加载的网页

    爬取异步加载的网页爬取异步加载的网页什么是异步加载如何爬取异步加载的网页什么是异步加载通俗地说就是你打开网页有数据 但是查看源文件没有数据比如下图 关于异步加载 可以参考 https blog csdn net article details 如何爬取异步加载的网页用 Chrome 浏览器 打开 检查 功能 打开 network XHR 然后访问该页面 看看

    2026年3月16日
    2
  • Idea激活码最新教程2023.3.7版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.3.7版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 3 7 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 3 7 成功激活

    2025年5月28日
    7
  • TTL门电路与CMOS门电路引脚是否能悬空及原因解释

    TTL门电路与CMOS门电路引脚是否能悬空及原因解释COMS 集成电路的输入阻抗很高 输入端悬空 会受到感应信号的干扰而误认为是有效输入信号 易出现错误的输出 故引脚不可悬空 且由于 COMS 的内部为 MOS 管 故电流非常小 所以引脚不论是接大电阻还是小电阻 都算低电平 对 TTL 门电路来说具有输入特性和负载特性 存在开门电阻 Ron 和关门电阻 Roff 若 Ri 小于关门电阻 则相当于引脚接了低电平 反之 若 Ri 大于开门电阻 则相当于引脚接了高电

    2026年3月19日
    2
  • EXCEL 出错 8000401a

    EXCEL 出错 8000401a检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误:8000401a先用骨哥狗了一会,没解决方案,又用摆渡,也没找到方法,最后还是看微软的帮助解决了问题:1.打开DCOM配置,取消交互式用户,使用启动用户2.安全中附足够权限,不知道用户是谁就写Everyonehttp://suppo…

    2022年7月25日
    11
  • leetcode-38外观数列

    leetcode-38外观数列原题链接给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:111211211111221第一项是数字 1描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”

    2022年8月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号