arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
setbuf()
setbuf()

この関数の目的

setbuf()は、バッファとして使う領域を指定する。

定義

	#include <stdio.h>
	void setbuf(FILE *stream, char *buf);

働き

値を返さないことを除けば、この関数は mode_IOFBF を、 sizeBUFSIZ を指定するか、 (buf がヌルポインタなら) mode_IONBF を指定した setvbuf() と同じである。

解説

この関数は、バッファとして使う記憶域をプログラマが指定するための関数であるが、使うことはほとんどない。 詳細は setvbuf() を参照のこと。

buf少なくとも BUFSIZ の大きさだけは確保されている必要がある、というのは重要な注意である。 これより短かった場合、配列オーバーの危険があるからだ。 知ってのとおり、配列オーバーはトップクラスにデバッグが難しいバグであり、再現性も低い。 あるいはヌルポインタを渡すなら、バッファリングは行われなくなってしまう。

バッファに関しては、 fflush() を参照のこと。

この関数がどんなときに役に立つのかは疑問である。

arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
KC