void read_class_information(head* beginning, int scale_type) {
puts("hello");
// printf("hello");
}
我有一个简单的函数,由main调用,printf()和fprintf()到stdout,看不到它在其中工作。另一方面,puts()工作正常。我在printf()调用或任何错误时没有打开文件。对问题可能有什么建议吗?感谢。
答案 0 :(得分:3)
尝试在语句末尾使用换行符('\n'
),同时确保使用相应的标题。
答案 1 :(得分:2)
因为printf()
不会自动刷新输出流。另一方面,puts()
在传递的字符串末尾添加一个新行'\n'
。所以它有效,因为'\n'
刷新了stdout
。
尝试
printf("hello\n");
或者,明确刷新stdout
fflush(stdout);
在printf()
陈述之后。
答案 2 :(得分:0)
默认情况下,流缓冲设置为行缓冲,这意味着在找到新的行字符\n
之前,没有任何内容真正发送到流。三种缓冲方法是:
_IONBF
:unbuffered _IOLBF
:行缓冲_IOFBF
:完全缓冲您可以更改任何流的缓冲方法。在这种情况下,您可能想要更改stdout
的缓冲方法:
setvbuf(stdout, (char *)NULL, _IONBF, 0);
这样,每次想要打印没有换行符的内容时,都不需要fflush(stdout);
。这有一些性能问题,可能会或不会对您产生影响,因此您可以决定哪个更适合您。
像往常一样,您可以访问执行man setvbuf
的文档(如果您已安装了文档)。