-
1 # 使用者8409087497702
-
2 # 華威老魏
1)你執行的應該是控制檯應用程式,需要在main程式碼最後return0之前新增一個暫停函式,該函式作用為從標準輸入獲取字元然後程式才會繼續執行,比較典型的為c程式中可以用getchar(),getchar()包含在標頭檔案stdio.h中。也可以呼叫system("pause");,這是一個windows的cmd命令暫停,在控制檯程式中體現為獲得任意鍵盤訊息後程序繼續,被包含在c庫stdlib.h中。

2)其實還有一個更好的解決辦法:在你的專案條目(project)上右擊滑鼠,在彈出選單上選擇最後一項“property/屬性”,在左邊的一欄裡找到“配置屬性->連結器->系統”,點選“系統”項後,在右邊的欄的“子系統(subSystem)”將刻項的值配置為"Console(/SUBSYSTEM:CONSOLE)"。
經過這樣的配置後,再按Ctrl+F5,程式執行完畢後就會停留在控制檯介面,提示你“按任意鍵繼續”。到此,問題完美解決。
-
3 # 百合
getchar與cin的區別為
getchar
getchar是讀入函式的一種。它從標準輸入裡讀取下一個字元,相當於getc(stdin)。返回型別為int型,為使用者輸入的ASCII碼或EOF。
cin釋義:
abbr. 宮頸上皮內瘤變(Cervical Intraepithelial Neoplasia);程式碼介面節點(Code Interface Node);通訊識別導航(Communication Identification Navigation);劍橋資訊網(Cambridge Information Network)
例句:
The rate of CIN in high risk pts undergoing cardiac angiography is comparable after administration of iopamidol-370 or iodixanol-320.
使用碘帕醇-370或碘克沙醇-320後,接受心血管造影術的高危患者中 CIN 發生率是相當的。
回覆列表
在VS編寫控制檯程式的時候,包括使用其他IDE(Visual C++)編寫C/C++程式,經常會看到程式的執行結果一閃而過,要解決這個問題,可以在程式碼的最後加上system("pause")、getchar()、cin.get()等。
一、使用system("pause")
比較常用的做法是使用system("pause"),這篇文章Things to Avoid in C/C++ -- system("pause")不推薦使用"system("pause"),因為:
1、不可移植。只適合Dos或Windows,不適合Linux等
2、耗費系統資源。呼叫系統命令system()去做"暫停程式"的事情有點大材小用。
3、必須新增標頭檔案:stdlib.h或者cstdlib
所以,應該儘量摒棄。
推薦方法:
1、 C中,使用getchar();
2、 C++中,使用cin.get();
二、使用getchar()
即在主函式尾部或程式最後加上getchar();
也就是接受鍵盤輸入,這樣程式就不會一閃而過,因為程式還沒有執行完!
注:當代碼中存在scanf()函式時,需要在getchar();前加上fflush(stdin);清除鍵盤快取,以防影響getchar()的接收!
三、使用cin.get()
cout<
cin.clear();
cin.sync();
cin.get();
備註:加上cin.clear(),cin.sync()這句,cin.clear() 用於清除輸入流的失敗狀態(如果有),使其恢復正常;cin.sync();是清空快取區,讓cin.get()真正接收到你的鍵盤輸入。
為什麼加上cin.get()控制檯視窗就會停在那了呢?
原因是:程式跑到這個位置就會停下來,等你輸入一個字元(前提是輸入緩衝區中沒有字元,否則會直接從輸入緩衝區中直接取,而不是等待鍵盤輸入)
我在網上看到這樣的解析:
大多數同學 C++ 的同學寫的第一個程式都是 Hello world,八成也都能跑出來。但是差不多都是 cmd 視窗就一閃而過了,什麼都看不清楚。要解決這個問題,可以在 main() 中的 return 語句前加一句 cin.get()。這樣的話,程式跑到這個位置就會停下來,等你輸入一個字元。程式碼如下(以下程式碼用的 IDE 是 wxDev-C++):
但是,如果在 cin.get() 前有 cin,那麼這個方法就很可能失效了。下面的這個程式碼中的 cin.get() 就不會其作用:
原因是,在第一次使用 cin 後,我們沒有清空流。所以當第二次使用 cin 時,輸入流不是空的(輸入是一個數字(比如 4),後面是一個空白符;而 cin 將接受這個數字,但是剩餘一個空白符)。所以,cin 會從輸入流中提取,而不是要求鍵盤輸入。
要使 cin.get() 大法還有用,可以配對使用 cin.clear() 與 cin.sync()。兩個函式:cin.clear() 用於清除輸入流的失敗狀態(如果有),使其恢復正常;而 cin.sync() 用於清空輸入流。程式碼如下:
這樣的話,cin.get() 就會請求鍵盤輸入一個字元。