从手册页混淆setbuf无效使用的例子

问题描述 投票:2回答:1

来自Ubuntu的man setbuf

您必须确保时间流关闭时buf指向的空间仍然存在,这也会在程序终止时发生。例如,以下内容无效:

联机帮助页中的示例代码无效:

#include <stdio.h>

int main(void)
{
    char buf[BUFSIZ];
    setbuf(stdin, buf);
    printf("Hello, world!\n");
    return 0;
}

为什么无效?程序通过buf返回后,局部变量return 0;被销毁。

c linux stdio
1个回答
5
投票

执行return后,buf不再存在,但程序执行继续调用退出处理程序和关闭流。因此,当流关闭时,缓冲区不存在。

© www.soinside.com 2019 - 2024. All rights reserved.