Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 循环未执行时不停止之前的语句_C_While Loop_Printf - Fatal编程技术网

C 循环未执行时不停止之前的语句

C 循环未执行时不停止之前的语句,c,while-loop,printf,C,While Loop,Printf,为什么下面的函数不打印“只是开玩笑!” 当这是打印“贾斯汀开玩笑!”之后是不停的“只是在循环内开玩笑!” 谁能解释一下逻辑吗?你的第一个例子 printf("Just kidding!"); 输出被缓冲,因此不显示 在第二个例子中 printf("Just kidding!\n"); 末尾的\n将刷新缓冲区,因此将显示字符串 在while循环insertfflush(stdout)之前的第一个示例中添加fflush(stdout)(或添加\n)。printf缓冲输出流。有时候,特别是

为什么下面的函数不打印“只是开玩笑!”

当这是打印“贾斯汀开玩笑!”之后是不停的“只是在循环内开玩笑!”

谁能解释一下逻辑吗?

你的第一个例子

 printf("Just kidding!");
输出被缓冲,因此不显示

在第二个例子中

   printf("Just kidding!\n");
末尾的
\n
将刷新缓冲区,因此将显示字符串


在while循环insert
fflush(stdout)之前的第一个示例中

添加
fflush(stdout)printf()
之后的code>(或添加
\n
)。
printf
缓冲输出流。有时候,特别是当你做一些奇怪的事情,比如无限循环时,你需要
fflush
it.@David谢谢!它起作用了。但是“\n”是如何产生区别的。@Vasanth--
stdout
是行缓冲的;添加
\n
字符表示已到达行尾。据我所知,
\n
是否会最终导致缓冲区刷新在某种程度上取决于实现。使用
fflush()
绝对会强制输出缓冲区刷新。谢谢david。我现在明白了。如果stdout是在一个交互式设备上,它可能是在OP的情况下,那么
\n
会刷新,否则不会。谢谢@Ed和dave
 printf("Just kidding!");
   printf("Just kidding!\n");