這個問題在這里已經有了答案: printf() 在 scanf() 之后以行緩沖區模式將沒有換行符的字串列印到 stdout (1 個回答) 15 小時前關閉。
我是 C 編程的初學者。我不明白一件事。為什么如果我放下那個
printf("write down any whole number:");
scanf("%d",&(any int variable));
當我使用gdb(debugger) 時,它顯示 CPU 執行printf(),但不寫入任何內容,然后轉到scanf()指令,然后寫入 String 并按scanf函式進行分析。
我正在使用 GCC 和 Linux Debian
問題:為什么printf只在 之后執行scanf?
謝謝你。
uj5u.com熱心網友回復:
正如您在除錯器中看到的那樣 — 很高興您將其用作初學者!— printf 已經執行好了。字符現在位于緩沖區中,當輸出換行符或緩沖區已滿時,該緩沖區將被重繪 ,這可能發生在 4096 位元組或其他數量,通常是 2 的冪。緩沖的原因是效率:實際傳輸到終端很慢。如果每個字符都發生這種情況,它會不必要地慢。解決方法是列印換行符,或使用flush 顯式重繪 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321754.html
上一篇:無法使用Alpine和Busyboxdocker映像運行可執行檔案
下一篇:在錯誤的一天執行的cronjob
