Loose-Info.com

Last Update 2019/12/24


TOP - C言語 - stdio.h - setlinebuf()

ファイル・ポインタで参照されるストリームのバッファリングを設定します。
setvbuf()を下記の引数設定(2, 3, 4番目)で呼び出した場合と等価となります。

setvbuf([fp], NULL, _IOLBF, 0)


 戻り値1  = setlinebuf(  引数1  )

戻り値1 :
int
実行が成功した場合 : 0
エラーが発生した場合 : 0以外
引数1 :
FILE *
ファイル・ポインタ

(例)
#include <stdio.h> int main() { FILE *fp; char s[10] = ""; fp = fopen("test_fopen_w.txt", "w"); fputs("12\n34\n56789", fp); fclose(fp); fp = fopen("test_fopen_w.txt", "r"); setvbuf(fp, NULL, _IONBF, 0); fscanf(fp, "%3s", s); printf("バッファリングなし --- 読み取り結果(3文字, バッファ消去前) : %s\n", s); printf("バッファリングされたデータを消去 : %d (成功 = 0)\n", fpurge(fp)); fscanf(fp, "%s", s); printf("バッファリングなし --- 読み取り結果(バッファ消去後) : %s\n\n", s); fclose(fp); fp = fopen("test_fopen_w.txt", "r"); setlinebuf(fp); fscanf(fp, "%3s", s); printf("バッファリングあり --- 読み取り結果(3文字, バッファ消去前) : %s\n", s); printf("バッファリングされたデータを消去 : %d (成功 = 0)\n", fpurge(fp)); fscanf(fp, "%s", s); printf("バッファリングあり --- 読み取り結果(バッファ消去後) : %s\n\n", s); fclose(fp); return 0; }

実行結果
バッファリングなし --- 読み取り結果(3文字, バッファ消去前) : 12 バッファリングされたデータを消去 : 0 (成功 = 0) バッファリングなし --- 読み取り結果(バッファ消去後) : 34 バッファリングあり --- 読み取り結果(3文字, バッファ消去前) : 12 バッファリングされたデータを消去 : 0 (成功 = 0) バッファリングあり --- 読み取り結果(バッファ消去後) : 12