【原创】自制type指令
关于本系列
本系列会不定期更新一些Windows中cmd相关指令。其中,包含文件操作,例如type,copy什么的,比较简单,只需要使用fopen等函数即可。对于dir等指令,牵涉到Windows API函数,可能比较复杂。
type指令
type指令用于在控制台上输出一个文本文件。在Linux中,等同于cat指令。
(区别还是有的,cat指令可以合并多个文件,但是type不可以)
例如,新建文本文件a.txt,里面是一行文本hello,world,并输入如下的指令:
type a.txt
结果将会是:
hello,world
获取命令行
我们执行命令的时候是这样输入的:
type a.txt
其中,type是我们的程序名,但是a.txt在运行过程中,我们如何知道呢?这时候,我们需要获取命令行的参数。
一般而言,我们的main函数都是这样写的:
int main(void){
}
但是,为了获取命令行,我们需要这样写:
int main(int argc, char **argv){
}
(注:第二个参数也可以写为char *argv[],根据个人习惯来)
其中,在运行type a.txt指令的时候,操作系统会自动往argv和argc中传入数值。
argc:2
argv[0]:"type"
argv[1]:"a.txt"
也就是说,argc表示参数个数,argv从0开始,依次存放命令行的每一个参数。一般而言,argv的第一项存放程序本身的名字。我们只需要找到argv[1],通过fopen打开指向的文件即可。
编写程序
#include<bits/stdc++.h>
using namespace std;
int main(int argc,char **argv){
if(argc!=2){
printf("The syntax of the command is incorrect.\n");
return 1;
}
FILE *in=fopen(argv[1],"r");
if(in==NULL){
printf("The file does not exists.");
return 1;
}
int ch;
while((ch=fgetc(in))!=EOF){
putchar(ch);
}
return 0;
}