回覆列表
  • 1 # 使用者8409087497702

    在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() 就會請求鍵盤輸入一個字元。

  • 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 發生率是相當的。

  • 中秋節和大豐收的關聯?
  • nuan聲母和韻母區別?