VC++2005運行Win32控制檯程序時,爲什麼彈不出控制檯窗口(無法看到運行結果)?

VC++中如果是按F5運行的話,表示以調試方式運行,如果遇到斷點可以停下來,也可以單步調試、監視變量等。程序結束時立即退出。
如果是按Ctrl+F5運行的話,表示以獨立的方式運行,即使遇到斷點也不會停下來。但程序結束時會顯示一個"按任意鍵繼續"的東東,讓你有足夠的時間觀察運行結果。

在Windows下的其他編譯環境中,要達到類似效果的話,在程序的最後加上一句:
system("pause");
這個system函數包含在頭文件stdlib.h(C++是cstdlib)裏面。

方法1:使用CTRL + F5運行你的程序.
方法2:在程序結尾加上getchar()  or getch(),當然別忘了頭文件conio.h.
方法3:在你的代碼中插入 system("pause")看看 

先解釋一下爲什麼一閃而過:
當你在vc++裏運行程序,vc++將會調用行命令模式(即command.com程序),打開你的程序。當程序執行完畢後將自動退出行命令模式。所以你來不及看你的程序的輸出。
要解決這個問題,最簡單的方案就是在你的代碼的最後,return 0;之前,加上
getchar();
//getch()似乎不是ANSI C的一部分
這個語句將使得你的程序做最後一件事情:從輸入緩衝區(輸入流stdin)中讀一個字符。也就是說在你的其他程序結束後,還要敲一下回車纔會結束所有程序。
但是,要注意的是:當程序快結束時,如果你的輸入緩衝區中已經有字符了,c語言將直接從緩衝區中讀取一個字符,然後結束程序。而不等待你的輸入。
比如:
#include<stdio.h>
int main(void)
{
putchar(getchar());
//你的程序只有這麼一句,作用是輸入一個字符,然後計算機將它輸出

getchar();//這是你爲了防止一閃而過而加的語句
return 0;
}
這個程序結束時將仍然一閃而過。原因在於第一條getchar()表達式執行的時候,將返回你輸入的第一個字符,後面的字符(包括回車字符'/n')留在了緩衝區。要解決這類問題,得隨機應變,沒有統一的解決方案。在這個例子中,可以這樣:
#include<stdio.h>
int main(void)
{
putchar(getchar());
//你的程序只有這麼一句,作用是輸入一個字符,然後計算機將它輸出
while(getchar()!='/n')
continue;//這個循環將把輸入緩衝區的內容清掉,一直清到換行符。

getchar();//這是你爲了防止一閃而過而加的語句
return 0;
}

複雜一點的解決方案是,不要在visual c++中執行。你先生成可執行文件,然後打開行命令模式(運行->cmd),然後在那裏運行你的程序,就不會自動退出了。

sorry,剛纔試了一下,ctrl+f5確實可以,parason說的很對。

本想不發了,但是寫了半天,不發也可惜,況且,從我寫的這些,你可以更加理解一些原理性的東西。而且,我寫的是一個通用的辦法,即使不是visual c++也可以用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章