このコードは、行バッファリングに 10 バイトだけを割り当て、最初の行が 45 バイトのファイルを読み取ります。実行すると、プログラムは最初の 10 バイトだけでなく 45 バイトすべてを読み取ります。
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *tst;
tst = fopen("x.log","r");
char *buff = malloc(10); //Just 10 characters
setvbuf(tst, buff, _IOLBF, 10);
char *mystring = malloc(45); //First line of x.log is 45 characters exactly
if ( fgets (mystring, 45, tst) != NULL )
puts(mystring);
fclose (tst);
free(buff);
}