2013-12-18 25 views

回答

0

基本上,setvbuf是相同的邏輯setbuf一個新的API。 setbuf是爲了與在setvbuf之前寫入的程序兼容而存在。

換句話說,除非你處理的代碼已經使用setbuf,只是忽略它存在。

Reference

功能:void setbuf (FILE *stream, char *buf)

  • 如果buf是一個空指針,這個功能的效果等同於調用setvbuf_IONBF一個模式的論點。否則,它等效於使用buf調用setvbuf,以及模式_IOFBF和大小參數BUFSIZ
  • setbuf函數是爲了與舊代碼兼容而提供的;在所有新程序中使用setvbuf。
0

三種可能的情況:

1)在(不太可能)_要 「優化」 您的I/O緩衝的情況下,你可以使用setvbuf

2)您可能希望緩衝到您直接控制(或者函數setbuf或setvbuf用來)

記憶......然後......

3)您可能希望關閉緩衝(或打開回到ON:再次,setbuf或setvbuf)。

如果你使用任何東西,你喜歡 退房Beej's Guide to C

http://beej.us/guide/bgc/output/html/multipage/setvbuf.html

+0

1) - >不,據我所知......緩衝區的大小總是必須是BUFSIZ。 –

+1

'setvbuf'允許您重新定義該IO流的緩衝區大小。 'setbuf'是setvbuf,緩衝區大小自動設置爲BUFSIZ。 – LinearZoetrope

相關問題