我在C中遇到printf功能问题。虽然禁用了缓冲,但它不打印输出:
setbuf(stdout, NULL);
和
setvbuf(stdout, NULL, _IONBF, 0);
我也使用fflush(stdout);
,但它仍然无效。
这是确切的代码:
int setup(){
//...
printf("Setup successful\n");
fflush(stdout);
return 0;
}
int main(int argc, char *argv[]){
setbuf(stdout, NULL);
setvbuf(stdout, NULL, _IONBF, 0);
setup();
//...
)
如果信息有帮助;我在Linux(raspberry Pi)上 提前谢谢!
答案 0 :(得分:6)
我尝试过尽可能重现您的设置。因此,我在VirtualBox映像中安装了Raspbian(Raspberry Pi操作系统),并使用Geany创建,编译和执行C文件。这是完整的代码:
#include <stdio.h>
int main() {
printf("Setup successful\n");
}
如您所见,此代码正确编译,执行并打印消息。无需显式刷新(printf
to stdout automatically flushes when encountering a newline character)。这种行为是标准化的,并由Raspbian安装的工具正确实施,因此可靠。