setbuf()
setbuf()
この関数の目的
setbuf()は、バッファとして使う領域を指定する。
定義
#include <stdio.h>
void setbuf(FILE *stream, char *buf);
働き
値を返さないことを除けば、この関数は mode に _IOFBF
を、 size に BUFSIZ
を指定するか、
(buf がヌルポインタなら) mode に _IONBF
を指定した setvbuf() と同じである。
解説
この関数は、バッファとして使う記憶域をプログラマが指定するための関数であるが、使うことはほとんどない。
詳細は setvbuf() を参照のこと。
buf は少なくとも BUFSIZ の大きさだけは確保されている必要がある、というのは重要な注意である。
これより短かった場合、配列オーバーの危険があるからだ。
知ってのとおり、配列オーバーはトップクラスにデバッグが難しいバグであり、再現性も低い。
あるいはヌルポインタを渡すなら、バッファリングは行われなくなってしまう。
バッファに関しては、 fflush() を参照のこと。
この関数がどんなときに役に立つのかは疑問である。
ヘッダファイル一覧に戻る <stdio.h>に戻る