setbuf | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


setbuf関数 🔗

概要

ストリームに、バッファを設定する。

ヘッダ

stdio.h

形式

void setbuf(FILE* stream, char* buf);

引数

stream

対象のストリーム。

buf

バッファとして使用する配列のメモリアドレス。その配列は BUFSIZ以上の大きさを持たなければならない。
あるいはヌルポインタを指定する。この場合、バッファリングしない。

戻り値

なし

詳細

指定ストリームにバッファを設定する。

引数buf に配列を指すポインタを指定すると、その配列をバッファ領域として使用する。この配列は、BUFSIZ の置換結果以上の大きさを持っていなければならない。

引数buf にヌルポインタを指定した場合は、バッファリングを行わない。

この関数を呼ぶタイミングは、対象のストリームがオープンされてから、そのストリームに対する何らかの操作が実行されるまでの間でなければならない。

なお、ストリームの種類ごとにデフォルトのバッファリング設定がなされているが、これは環境によって異なる。たとえば、標準出力ストリーム📘はバッファリングされており、標準エラーストリーム📘はバッファリングされていないことが多いが、これも環境依存の可能性がある。こういったデフォルトの設定を変更したい場合に、この関数が使用できる。
注意

引数buf に配列を指定した場合は、対象のストリームを使用している間、その配列が存在し続けなけばならない。

使用例
#include <stdio.h>

int main(void)
{
    char stdout_buf[BUFSIZ];

    // バッファリングをおこなう
    setbuf(stdout, stdout_buf);

    char buf[80];
    printf("文字列を入力してください"); // 改行なし
    fgets(buf, sizeof(buf), stdin);
    printf("入力内容:%s\n", buf);


    // バッファリング無しに変更
    setbuf(stdout, NULL);

    printf("文字列を入力してください"); // 改行なし
    fgets(buf, sizeof(buf), stdin);
    printf("入力内容:%s\n", buf);
}

実行結果:

Hello
文字列を入力してください入力内容:Hello

文字列を入力してくださいHello
入力内容:Hello
関連

setvbuf関数の方が、より詳細な指定が行える。

解説章

第43章


参考リンク 🔗

本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。


更新履歴 🔗



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る