Начиная с man setbuf
в Ubuntu:
Вы должны убедиться, что пространство, на которое указывает buf, все еще существует к моменту закрытия потока, что также происходит при завершении программы.Например, следующее недопустимо:
Неверный пример кода из man-страницы:
#include <stdio.h>
int main(void)
{
char buf[BUFSIZ];
setbuf(stdin, buf);
printf("Hello, world!\n");
return 0;
}
Почему это недопустимо?Локальная переменная buf
уничтожается после возврата программы через return 0;
.