[英]C - printf() not working but puts() is working fine
void read_class_information(head* beginning, int scale_type) {
puts("hello");
// printf("hello");
}
我有一個簡單的函數,由main和printf()和fprintf()調用,以使stdout不能在其中工作。 另一方面,puts()可以正常工作。 我在printf()調用時沒有打開任何文件,或者有任何錯誤。 對問題可能有什么建議? 謝謝。
因為printf()
不會自動刷新輸出流。 另一方面, puts()
在傳遞的字符串的末尾添加新行'\\n'
。 之所以起作用,是因為'\\n'
刷新了stdout
。
嘗試
printf("hello\n");
或者,顯式刷新stdout
fflush(stdout);
就在printf()
語句之后。
嘗試在語句末尾使用換行符( '\\n'
),並確保您具有適當的標題。
默認情況下,流緩沖設置為行緩沖 ,這意味着在找到新的行字符\\n
之前,不會真正發送任何內容給流。 三種緩沖方法是:
_IONBF
:無緩沖 _IOLBF
:行緩沖 _IOFBF
:完全緩沖 您可以更改任何流的緩沖方法。 在這種情況下,您可能要更改stdout
的緩沖方法:
setvbuf(stdout, (char *)NULL, _IONBF, 0);
這樣,您就不必fflush(stdout);
每次您要打印不帶換行符的內容時。 這會影響到您或不影響您的某些性能問題,因此您可以決定哪個更適合您。
和往常一樣,您可以訪問執行man setvbuf
的文檔(當然,如果安裝了文檔)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.