怎么做一个类似dos的交互控制台??

cxxc 2004-04-19 12:20:17
1 我如何读取输入的指令.
2 在无输入的情况下继续原提示符?
请输入你的指令:****
****我怎么得到他进行判断?
请输入你的指令:(回车)
请输入你的指令:
...全文
34 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
speedfirst 2004-04-20
  • 打赏
  • 举报
回复
用一个大循环,每次读入一个字符串,如果是C的话就实现开一个数组,如果是C++就给一个string变量,然后在循环中依次判断是不是所需的命令。

至于预定义的命令可以编入一个自定义类Command的vector里

class Command
{
public:
Command(string name, long (execute*)(void * paramters));
~Command();
string command_name; //你的命令名
long (command_execute*)(void* paramters); //执行你的命令的函数指针
};

然后给每一个命令定义一个Command实例
然后把他们全都输入一个vector中
主程序中用一个循环,
for(int i = 0; i < command_vector.size(); i++)
{
if(input_command == command_vector[i])
{
if(command_vector[i].command_execute(...实际的参数))
cout<<"success"<<endl;
else
cout<<"fail"<<endl;
break; //去读下一个命令
}
}



这种方法适于大量的命令集程序编写,而已比较容易维护。
xzhuang 2004-04-20
  • 打赏
  • 举报
回复
char get[128];

int getinput ()
{
printf ("qingshuru:");
gets (get);
}

int fun ()
{
getinput ();
do {
if (!strcmp (get, "\n"))
getinput ();
}while(1)

}
cxxc 2004-04-20
  • 打赏
  • 举报
回复
大家还没理解我的意思
我想要的是
请输入:(回车)
请输入:(回车)
请输入:
antijpn 2004-04-20
  • 打赏
  • 举报
回复
读取的方法多了,如果是C的话,开辟一个足够大的数组,然后用scanf或者gets之类的函数读就是了

如果是C++的话更好办,用cin还有string比上面的那个还方便。

Ctrl+C应该是你拦不住的,除非调用系统API去拦截(那这个程序就需要改用Win32SDK写了),如果是DOS下面的程序的话,可能要调用中断程序去处理。
cxxc 2004-04-20
  • 打赏
  • 举报
回复
这个问题本身我就觉得有点弱(智),但我还是不知道无输入如何判定??会出现这样的情况
请输入:


^c
c:
Kernel_Don 2004-04-19
  • 打赏
  • 举报
回复
char cmdstr[256];
for(;;)
{
gets(cmdstr);
if (strcmp(cmdstr,"cmd1")==0)
{
//do something
}
if (strcmp(cmdstr,"cmd2")==0)
{
//do something
}
...
if (strcmp(cmdstr,"cmdn")==0)
{
//do something
}
}
wshcdr 2004-04-19
  • 打赏
  • 举报
回复
对楼主的意思不是特别明白
试回答下

1 我如何读取输入的指令.
用gets()


2 在无输入的情况下继续原提示符?
请输入你的指令:****
****我怎么得到他进行判断?
请输入你的指令:(回车)
请输入你的指令:

在gets()没有得到字符的情况下
就输入指令:

syuui 2004-04-19
  • 打赏
  • 举报
回复
int main( int argc, char *argv[], char *envp[] )
{
... ...
while( strcmp( in_cmd, "exit" )!=0 )
{
// judge the inputted command.
fprintf( stderr, "%s %s$ ", path, userid );
// wait for the next input
}
}
Allemand 2004-04-19
  • 打赏
  • 举报
回复
楼主所说的问题是命令行参数问题,C的main()是可以带参数的,main(char* argv, int argc),好像是这样的,我不记得了,这样,C程序可以象DOS命令一样带参数。楼主可以查阅一下有关书籍,(老谭的书上说得很明白)。argv 指向的就是命令后的字符串,对这个字符串进行扫描,操作,就可以实现楼主所希望的功能了。
zhouqingyuan 2004-04-19
  • 打赏
  • 举报
回复
因为你的指令都是事先定义好的,所以可以直接用字符串存储你输入的,这个直接用(cin)就可以做到,然后和你的指令进行比较进行相应的操作。
没有输入或者无效的输入,都可以进行让他再次输入的操作的。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧