首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 程序在別人電腦閃退解決方案:雙重 getchar() 法

     編輯:程式設計綜合問答

現象

控制台程序輸出結果後瞬間關閉,用戶來不及查看。

根因

  • IDE(VS、Code::Blocks)調試時自動暫停,直接運行 .exe 無宿主進程保持窗口。
  • scanf/cin 讀取後緩衝區殘留 \n,單次 getchar() 會讀走換行符直接返回。

標準修復

#include <stdio.h>
#include <stdlib.h>

int main() {
    // 業務邏輯...
    printf("結果:%d\n", result);

    // 關鍵兩行
    printf("按任意鍵退出...\n");
    getchar(); // 吃掉殘留的 \n
    getchar(); // 真正等待用戶按鍵
    return 0;
}

跨平台更健壯寫法

#ifdef _WIN32
    system("pause"); // Windows 專用,最直觀
#else
    printf("Press Enter to exit...");
    while (getchar() != '\n'); // 清空緩衝區
    getchar();
#endif

VS 專屬設置(免改代碼)

  1. 項目屬性 → Linker → System → SubSystem: Console (/SUBSYSTEM:CONSOLE)。
  2. 調試 → 選項 → 「自動關閉控制台」取消勾選。

「雙重 getchar()」是 C 課本級標準答案,兼容所有編譯器、無依賴、零副作用。發布給非技術用戶時,建議改用 system("pause") 提示更友好。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved