C++模拟终端

#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;

class MESSAGE{
	public:
		int argc;
		char *argv[25];
		char tmp_cmd[100];
	public:
		void getMessage();
		void processMessage();
		void printMessage();
};
void MESSAGE::getMessage(){
	while (true){
		printf(">>>");
		char *res = NULL;
		res = fgets(tmp_cmd, 100-1, stdin);
		if (res==NULL && ferror(stdin)){
			printf("fgets error\n");
		}
		processMessage();
		printMessage();
	}
}
void MESSAGE::printMessage(){
	for (int i=0; i<argc; i++){
		printf("%s\n", argv[i]);
	}
}
void MESSAGE::processMessage(){
	int len = strlen(tmp_cmd);
	tmp_cmd[len-1]=' ';
	argc=0;
	char tmp_str[100];
	int pos_tmp_str=0;
	for (int i=0; i<=len; i++){
		if (tmp_cmd[i]!=' '){
			tmp_str[pos_tmp_str++]=tmp_cmd[i];
		}else{
			tmp_str[pos_tmp_str]='\0';
			int l=strlen(tmp_str);
			argv[argc] = (char *)malloc(sizeof(char)*(l+1));
			strcpy(argv[argc], tmp_str);
			argc++;
			pos_tmp_str=0;
		}
	}
}
int main(){
	MESSAGE msg;
	msg.getMessage();
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42172261/article/details/106150453