注册 登录
编程论坛 C++教室

system(“exit”)不能用的

mxstone 发布于 2014-08-19 14:32, 1340 次点击
void WaitUser()                           /*等待用户操作*/
{
    int iInputPage=0;
    cout << "任意键返回主菜单(除Q外),q退出" << endl;
    char choice[256];
    cin >>choice;
    if(choice[0]=='q')
        system("exit");       /*调用系统函数退出*/
}

为什么这个system exit好像失灵?(菜单是个死循环 我想用这个exit退出系统   谁知道怎么弄求解
17 回复
#2
wp2319572014-08-19 14:38
你发全一些的代码  这2句看不出啥来
#3
mxstone2014-08-19 15:04
回复 2 楼 wp231957
那这么问吧 system(“exit”)调用不是会退出系统的么 , 要怎么才能正确用这个?
#4
wp2319572014-08-19 15:06
使用 exit 干嘛  return 不是很好  只不过我不知道你是从哪里返回  是返回上一个调用  还是直接退出程序
#5
mxstone2014-08-19 15:10
回复 4 楼 wp231957
我的菜单是一个死循环.进去完成功能后 不用这个EXIT退出 ,按任意键回车就会回到菜单
我的菜单函数
void mainloop()
{
    ShowWelcome();
    while(1)
    {
        ClearScreen();
        ShowWelcome();
        ShowRootMenu();
        switch(GetSelect())
        {
        case 1:
            ClearScreen();
            AddData();           /*添加功能选项*/
            break;
        case 2:
            ClearScreen();
            ViewData();          /*浏览功能选项*/
            break;
        case 3:
            ClearScreen();
            CheckData();         /*查询功能选项*/
            break;
        case 4:
            ClearScreen();
            DeleteDataFromFile(); /*删除功能选项*/
            break;
        }
    }
}
#6
TonyDeng2014-08-19 17:29
直接return就可以了,不是调用system("exit")的,不知哪抄的假《葵花宝典》。
#7
mxstone2014-08-19 17:46
回复 6 楼 TonyDeng
return 0么就可以整个程序关闭了么?
#8
stop12042014-08-19 17:53
诶. 简单的给他解释不就行了.. 用的着说其他的.


用exit(EXIT_FAILURE);  注意大写.
#9
TonyDeng2014-08-19 17:56
以下是引用mxstone在2014-8-19 17:46:49的发言:

return 0么就可以整个程序关闭了么?


是的
#10
stop12042014-08-19 17:57
或者用硬编码 .    -.-  就是 数字

1代替.   那个常量的值就是1


正常结束 用 0

[ 本帖最后由 stop1204 于 2014-8-19 17:58 编辑 ]
#11
stop12042014-08-19 17:59
回复 楼主 mxstone
return 0;
的局限就是.  你只能在一个地方打这个.
不能在一个函数内出现2个return.

到时候就用exit(0);
#12
mxstone2014-08-19 18:04
回复 9 楼 TonyDeng
试了-  -貌似不行哎,亲....我就是想 输入q了 这个黑框就关闭掉
#13
mxstone2014-08-19 18:07
回复 11 楼 stop1204
我在试-  -。。。也在百度查找中。。。
#14
TonyDeng2014-08-19 18:09
以下是引用mxstone在2014-8-19 18:04:42的发言:

试了-  -貌似不行哎,亲....我就是想 输入q了 这个黑框就关闭掉


不是在控制台窗口中用命令启动程序,在结束时会由操作系统关掉“黑框”,否则无法自己关掉。exit的command的内部命令,关闭宿主程序,你自己写的程序无法关闭自己的“上司”,所以system("exit")是没用的。要彻底结束“黑框”,得在启动结束后用指令exit(通过批处理)。
#15
mxstone2014-08-19 18:09
回复 8 楼 stop1204
嗯,你这个是可行的,跳出了循环。谢谢啊。 那能问问 这个就是跳出循环用的麼? 有没有别的可以直接在里面执行就关闭的?(就顺带问问别的, 分迟点马上给你。
#16
TonyDeng2014-08-19 18:10
exit()跟system("exit")根本是两回事
#17
TonyDeng2014-08-19 18:19
结束自己的程序跟结束“黑框”又是另一回事。无法结束自己的程序是你的逻辑跳转没到main()的正常流程处执行return,即没跳出循环。
#18
mxstone2014-08-19 18:41
回复 17 楼 TonyDeng
好吧,我自己再看看,想想,谢谢你说这么多。-  -一人分10分,,不多,多多包涵...
1