Windows下dos中 copy命令的实现
实现的的功能:复制文件功能
一:功能分析
1.1windows 系统下的 dos命令中 指令 copy 能实现文件的复制。
比如: copy log.txt log1.txt 就是将log.txt 文件复制一份,复制后的文件名称为 log1.txt
图例:
1.2copy命令实现要求:
自己创造一个命令,比如:test.exe log.txt test.bak 有三个参数,第一个参数是模拟实现的copy的可执行程序,第二个参数要拷贝的文件名称,第三个文件是拷贝后的文件名称。
1.3思路分析:
- copy命令 由我们写的程序来实现
- 要拷贝的文件名称以及拷贝后的名称,由程序自动获取和输出,不用自己输入。可以利用main函数的参数列表 来实现这个功能
- 复制过程 就是打开文件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[ ]:字符指针数组,每一个字符指针指向一个环境变量(字符串);
Windows下dos中 copy命令的实现相关推荐
- Windows下cmd中cd命令不起作用的原因和解决办法
问题如图: 即便是输入了cd指令,但是并没有跳转. 原因: 实际上cmd换目录跨磁盘的话需要先进行磁盘的转换. 解决办法: 先输入: D: 进行磁盘转换 然后cd到对应目录下即可:
- windows下DOS命令关闭占用的端口
windows下DOS命令关闭占用的端口 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用. ...
- windows下cmd中命令操作
windows下cmd中命令: cls清空 上下箭头进行命令历史命令切换 --------------------------------------------------------------- ...
- windows下cmd中输入nvidia-smi显示不是内部或外部命令解决方法!
windows下cmd中输入nvidia-smi显示不是内部或外部命令解决方法! 我的cuda.cudnn等都是可以正常使用的,只是查看不了显存,在查看了很多博客后下面这个方法亲测有效: 在环境变量的 ...
- windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同
windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同 介绍ubuntu系统下配置docker下GPU使用环境的文章很多,本文算是一个比较性梳理. 主要比较一下wsl ...
- python2没有pip命令_解决Windows下python和pip命令无法使用的问题
一. python命令找不到 安装python之后经常会出现下面的问题 , python命令找不到,这是因为Windows的环境变量中没有定义python的安装路径 这个时候我们先找到python的安 ...
- windows 下借助7zip实现命令行解压缩
windows 下借助7zip实现命令行解压缩 64位电脑下载 https://www.7-zip.org/a/7z1805-x64.exe 安装 安装目录下所有文件如下: 在命令行下只需要用到 7z ...
- DOS中SET命令的详细用法
DOS中SET命令的详细用法 例子: @echo off set var=我是值 echo %var% pause 请看 set var=我是值 ,这就是BAT直接在批处理中设置变量的方法! set ...
- Windows下能查看日志命令的工具tail及其下载、使用方法
Windows下能查看日志命令的工具tail及其下载.使用方法 除了Linux操作系统下,在Windows操作系统下也可实现tail命令来查看程序运行日志,但要借助一个工具:tail.exe 1 ta ...
最新文章
- 谁说技术男不适合养猫!90后程序员2天做出猫咪情绪识别软件
- python.freelycode.com-快速提示-使用Modin加速Pandas
- C#入门篇5-5:流程控制语句 dowhile
- Charles 某音最新版本抓包环境搭建
- Spring框架IoC和传统bean调用的区别
- pythonfor循环break_python 中 for 循环 if循环 break
- SAP Spartacus SpartacusB2cConfigurationModule 的使用场景
- Java 8 Friday Goodies:新的新I / O API
- java servlet是单例吗_关于java:为什么apache servlet是单例?
- fetch请求报错:
- 我的git仓库,顺记github配置
- DVWA-SQL注入(SQL Injection)低/中/高级别
- oracle24550,ORA-24550: signal received:这个问题的原因及解决办法
- 破解云数据库MongoDB运行变慢指南
- Hadoop SequenceFile存储格式入门
- ios开发闹钟步骤_苹果快捷指令自动化(起床关闹钟后自动播放音乐)
- 节点服务器列表文件,服务器emule必备知识(更新服务器列表与kad节点文件)
- c++实现n阶行列式计算
- ps怎么加底部阴影_PS三分钟之如何在PS中给物体添加阴影
- 手工重建复合文档(.doc;xls,ppt)文件头,修复文件全过程