【原创】自制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;
}
posted @ 2021-10-10 16:11  计算机知识杂谈  阅读(246)  评论(0编辑  收藏  举报