printf("1abcdefghijklmn\n");
printf("2opqrstuvwxyz01|------\r");
printf("3mmmmmmmmmmmmmm\n");
輸出:
1abcdefghijklmn 3mmmmmmmmmmmmmm|------
將第二行 \r 改為 \n 後正常輸出三行。
| 轉義符 | 名稱 | 光標動作 | 典型用途 |
|---|---|---|---|
\n (LF, 0x0A) | 換行 | 移至下一行行首 | Linux/Unix/MacOSX 文本行結束符 |
\r (CR, 0x0D) | 回車 | 移至當前行行首 | 經典 MacOS (OS 9) 行結束符;Windows 組合為 \r\n |
printf("2...|------\r") 輸出完畢後,光標停在該行行首(第 0 列)。printf("3mmmmmmmmmmmmmm\n") 從行首開始寫入,逐字符覆蓋原有內容。|------),導致第二行內容被完全覆蓋,僅殘留第三行未覆蓋到的尾部 |------。"w"),\n 會自動轉換為平台慣例 (Windows→\r\n, Linux→\n)。\r\n 為行結束符,必須顯式發送。\r 實現單行刷新進度條:printf("\rProgress: %d%%", p); fflush(stdout);\r 只回車不換行,導致後續輸出覆蓋當前行;\n 換行並歸列。理解兩者差異,對處理跨平台文本、控制台交互、網絡協議至關重要。現代編程中,除非有特定單行刷新需求,默認使用 \n 並依賴運行庫處理平台差異。