首页 文章

防止在Visual Studio中关闭控制台窗口

提问于
浏览
0

我在Visual Studio中的项目有问题 . 项目创建为空项目,然后添加.c文件 . 问题是,当我将输入重定向到文件时,控制台会在程序结束后立即关闭 .

我试着去 Properties > Linker > System 并选择 /SUBSYSTEM:CONSOLE 选项,但它没有看到输出 .

我通过在 Configuration properties > Debugger > Command 中添加 <"in.txt" 来重定向输出,它完全按照我想要的方式工作,除了控制台太快关闭 . 重定向输出时不会发生此问题 .

另外使用 getchar()scanf(...)system("pause") 也不起作用 .

我希望通过仅更改一些项目设置并且如果可能的话不向程序添加一些额外的代码来解决这个问题,但是任何解决方案都是值得赞赏的 .

编辑:正如我上面所说,我已经尝试过几个方面,包括类似问题的一些答案,但没有一个帮助 .

1 回答

  • 1

    这是标准的Windows行为,控制台程序在不从现有控制台启动时会自动获得新的控制台窗口,并且一旦程序结束,这个新窗口就会自动关闭 . 因此,强制窗口保持打开程序的关键是防止程序终止 .

    对于像 getchar() 这样的东西,你依赖于这些调用 block 直到有更多输入可用的事实 . 只要输入实际来自控制台,这就可以正常工作 . 但是当您将输入重定向到来自文件时,总会有输入可用 - 或者's more to read from the file or you'll会立即收到错误(例如,对于EOF) . 那个's the reason all these 2488506 don'不再工作了 .

    一个简单且非常不干净的版本只是在程序结束时添加一个空循环,因此它永远不会退出 . 在Windows平台上,这可能是这样的

    for (;;) Sleep(1000);
    

    Sleep() (包括 windows.h 使用它)的调用确保此循环不必通过按Ctrl C或关闭窗口来强制结束程序 . 当然,不要将此循环留在最终程序中,从现有控制台窗口启动时会非常烦人 .

    这个问题可能有更好的解决方案,但我希望我能解释一下为什么会这样 .

相关问题