为什么printf()函数明明是缓冲输出函数,为什么还会自动显示啊?(备注:后面没接输入函数,也没有换行符,缓冲区也没满)
你使用的操作系统是windows吗?windows的话输出是不带缓冲区的,在Linux 和 Mac OS系统上,输出才带有行缓冲区的
自动显示是什么效果,能举例么?
缓冲区的作用,就是你把一个字符串输入完毕之后按下enter,才会结束,然后从你输入的第一个字符慢慢的输出到外面。比如说缓冲区abcded.那么后来printf也会输出abcded
题主你好,printf()函数是缓冲输出函数,后面不加 \n,在程序没有结束之前,并且没有刷新缓存fflush()的情况下,内容不会输出到屏幕上
如果程序结束,缓冲区会自动刷出来
#include <stdio.h>
int main()
{
printf("hello world");
while(1);//程序没有结束,不会输出
return 0;
}
#include <stdio.h>
int main()
{
printf("hello world");
fflush(stdout);//刷新输出缓存,可以输出
while(1);//程序没有结束
return 0;
}
#include <stdio.h>
int main()
{
printf("hello world");
_exit(0);//程序立即退出,不刷缓存。也不能输出
fflush(stdout);//刷新输出缓存,可以输出
while(1);//程序没有结束
return 0;
}
希望采纳!非常感谢
看下这篇博客,也许你就懂了,链接:C语言常见漏洞-缓冲区溢出