#include <stdio.h> void setbuf(FILE *stream, char *buf); void setbuffer(FILE *stream, char *buf, size_t size); void setlinebuf(FILE *stream); int setvbuf(FILE *stream, char *buf, int mode, size_t size);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
setbuffer(), setlinebuf():
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE
通常、ファイルはすべて block buffered である。ストリームがターミナルを参照している場合 (stdout は通常ターミナルを参照している)、ストリームは line buffered となる。標準エラー出力 stderr はデフォルトでは常に unbuffered である。
setvbuf() 関数は、オープンしている任意のストリームに対してバッファーを変更できる。 引数 mode は、次の 3 つのマクロのうちいずれかである:
unbuffered のファイルを除き、 buf 引数は size バイト以上の大きさのバッファーを指していなければならない。このバッファーは現在の バッファーの代わりに用いられる。もし、引数 buf が NULL ならば、モードだけが変更される。 新しいバッファーは次に読み書きした際に割り当てられる。 setvbuf() 関数は、ストリームをオープンした後、 そのストリームに対して何らかの操作をする前にのみ使用できる。
他の 3 つの関数は setvbuf() の呼び出しに単純に置き換えることができる。 setbuf() 関数は、
setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
と全く同等だし、 setbuffer() 関数は、バッファーサイズがデフォルト値 BUFSIZ ではなく引数で与えられる点以外は同じである。 setlinebuf() 関数は以下と同じである。
setvbuf(stream, NULL, _IOLBF, 0);
インターフェース | 属性 | 値 |
setbuf(), setbuffer(), setlinebuf(), setvbuf() |
Thread safety | MT-Safe |
#include <stdio.h>
int main(void) {
char buf[BUFSIZ];
setbuf(stdin, buf);
printf("Hello, world!\n");
return 0; }
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]