关于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);追问

大神,你必须接受我的膜拜,打这这么多字不容易,不多说

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-03-24
sleep函数的参数是毫秒单位的,所以应该是sleep(3000);才能停3秒
第2个回答  2017-03-23
加两行 gtechar(); 看看追问

怎么加?

关于c语言函数,看图,我想要的结果是eeee在屏幕上停留3秒后消失,为什么...
原因:printf()函数是行缓冲输出。printf()不直接把参数发送到屏幕上,而是把参数输出到输出缓冲区里面。输出缓冲区是一块内存区域,一般大小是4096字节,这表示它可以存放4096个字符。出现以下几种情况之一,输出缓冲区的内容会被发送到标准输出(比如显示器),这叫做刷新缓冲区:1.行缓冲输出遇到换行符时...

C语言错误提示identifier 'b'是什么意思
2.不能把C语言关键字作为用户标识符,例如if ,for, while等.3.标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。4.标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。5.标...

相似回答