操作系统实验——命令解释程序

操作系统实验——命令解释程序

参考文章
https://blog.csdn.net/sophia__yu/article/details/79385398

1.实验要求
利用C语言编写一个微型命令解释程序minishell.c,该程序可接收并解释以下命令:
	(1) dir					    列出当前目录
	(2) cop	file1	 file2		拷贝文件
	(3)	era filename			删除文件
	(4) disp  string			显示字符串
	(5)	end					    结束,退出
要求:
	(1)检查命令的合法性,如果有错误,显示出错信息,等待重新输入;
	(2)命令前后有空格示为合法命令。
2. 代码实现
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//去除首部空格
void trim(char * cmd1,char * tem){
    int m=0;
    while (cmd1[m]==' ')
        m++;
    strncpy(tem,cmd1+m,strlen(cmd1)-m);
    tem[strlen(cmd1)-m] = '\0';
}
int main(){
    char cmd1[80];
    char str2[80];
    char tem[80];
    char str3[80]={0};
    char *cmd;
    char *scwt[] = {"dir","cop" ,"era" ,"disp" ,"end"};
    char *scwt2[] = { "dir","cp", "rm" ,"echo","end" };
    static int cmdnum = 5;
    int j;
    while(1){
        printf( "Please input command:");
        gets(cmd1);
        trim(cmd1,tem);
        //找到第一个出现空格的位置
        int n=strcspn(tem ," ");
        if(n>0 || strlen(tem)>0){
            strncpy(str2,tem,n);
            str2[n]='\0';
            cmd=str2;
            for (j = 0; j < cmdnum; ++j) {
                if (strcmp(cmd,scwt[j])==0){
                    break;
                }
            }
            if (j==4)
                exit(0);
            if (j<cmdnum){
                //拼接字符串
                sprintf(str3,"%s%s",scwt2[j],tem+n);
                system(str3);
                continue;
            }
            printf("Bad command\n");
        }
    }
    return 0;
}
3.运行结果

image-20211022145830576

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值