关于c语言函数,看,我想要的结果是eeee在屏幕上停留3秒后消失,为什么一运行就什么都没有
原因:printf()函数是行缓冲输出。
printf()不直接把参数发送到屏幕上,而是把参数输出到输出缓冲区里面。输出缓冲区是一块内存区域,一般大小是4096字节,这表示它可以存放4096个字符。
出现以下几种情况之一,输出缓冲区的内容会被发送到标准输出(比如显示器),这叫做刷新缓冲区:
1.行缓冲输出遇到换行符时;
2.需要输入时;
3.缓冲区满时;
4.程序结束时;
5.调用强制刷新输出缓冲区的函数fflush(stdout)时。
虽然不知道清屏函数clrscr()的具体实现,不过它也会导致输出缓冲区被刷新,并且随后清除屏幕上的内容。
如果对上面的内容不理解可以把printf("eeee");分别替换成以下几种形式运行:
1.末尾添加换行符:
printf("eeee\n");
2.调用fflush(stdout),与上面的区别是不会换行:
printf("eeee");
fflush(stdout);
3.在中间插入换行符:
printf("ee\nee");
4.中间插入换行符,并且调用fflush():
printf("e\neee");
fflush(stdout);