printf("XXXXX");
scanf("%d", &a);
// 預期:先印出 XXXXX,再等待輸入
// 實際:程式卡住等待輸入,輸入後才一次性印出 XXXXX
stdout 連接終端機時預設為**行緩衝**(遇 \n 刷新)。printf("XXXXX") 無換行符,資料滯留緩衝區;scanf 讀取前不會自動刷新 stdout。printf("XXXXX\n");(最簡單、可移植)。printf("XXXXX"); fflush(stdout);(POSIX/C 標準保證有效)。setbuf(stdout, NULL); 在程式啟動時呼叫(效能稍降)。MSVC 在主控台模式下對 stdout 採行緩衝;Linux GCC 同理。問題通常出現在 **MinGW/Windows 原生終端** 或 **IDE 內建主控台** 模擬器未正確實作行緩衝行為。
所有互動式提示訊息**務必以 \n 結尾**,或顯式 fflush(stdout),確保跨平台行為一致。