使用Clion遇到的问题
printf()函数语句执行后不打印
首先我们来看一个简单的代码:
1 | |
正常情况下输出应该如图所示:

但是今天在使用Cion时突然变成这样:

可以看到,程序的所有输出都被放到了最后,也就是说我们无法在正确的时机看到printf()的内容
解决方法如下:
1 | |
在main()函数中加入一句:setbuf(stdout.NULL)
加入后即可解决问题。
原因
标准输出流的模式被设置为有缓冲模式,计算机会先将需要输出的内容缓冲下来,最后再一并输出。
setbuf(stdout, NULL) 用于设置标准输出流 stdout 为无缓冲模式。具体来说,这意味着每次调用 printf 或其他输出函数时,数据会立即输出到控制台,而不是先存储在缓冲区中。
以下是详细步骤:
setbuf是一个标准库函数,用于设置流的缓冲模式。stdout是标准输出流,通常指向控制台。NULL参数表示禁用缓冲,即设置为无缓冲模式。
使用Clion遇到的问题
http://blog.ulna520.com/2024/09/21/Clion/