7得票1回答
freopen() 函数的预期行为与缓冲设置(setvbuf())有何关联?

为了实现freopen(), 我找到了标准中的一些规定,但是我并没有看到任何具体的规定。 所以... freopen()会关闭流(忽略错误),清除其错误和EOF标志,重置宽度方向,然后使用给定模式重新打开流。这很清楚;这基本上是一个fclose() / fopen()。即使它没有被定义为这样...

7得票1回答
C标准库中的任何函数是否会隐式地使用 `stderr`?

C语言规范要求所有C程序都有三个可用的流(stream): stdout、stdin和stderr。 用户可以根据自己的需要使用这些流,例如: fprintf(stdout, "lol"); fputs("oops", stderr); fgets(buffer, 20, stdin); ...