为什么clrscr()只能清屏25行???
我运行如下一程序,发现clrscr()只能清屏25行,请大家帮我找找原因,谢谢!
#include <stdio.h>
#include <conio.h>
void main()
{
int i;
clrscr();
for (i=1;i<50;i++)
printf("%d\n",i);
clrscr();
getch();
}
----------------解决方案--------------------------------------------------------
改成100也清得很干净....
----------------解决方案--------------------------------------------------------
你用的是什么编译器?
我记得dos一屏就是25行,所以清掉25行就行了,dos可没有滚动条
----------------解决方案--------------------------------------------------------
我的windows下dos有滚动条
----------------解决方案--------------------------------------------------------
我的windows下dos有滚动条
----------------解决方案--------------------------------------------------------
请楼上弄清楚DOS和控制台的区别
----------------解决方案--------------------------------------------------------
我错了...
----------------解决方案--------------------------------------------------------
原型:extern void clrscr(void);
用法:#include <system.h>
功能:清屏
说明:清除屏幕缓冲区及液晶显示缓冲区
光标位置回到屏幕左上角。
个人理解:
只是限于,你当前的的屏幕缓冲区仅能够实现 25行的显示功能,所以就只能清除25行;
(不知道你是在你的屏幕上得出的结果还是本来就只能处理 25行)
因为按照功能说明:应该不只25行因该是整缓冲区,那么如果有滚动条,那么就不止了
另外或许 这个函数 和编译环境有关 TC一屏幕只有 25行所以得到这个数据。
----------------解决方案--------------------------------------------------------
大家好,谢谢大家的帮助。通过测试发现,在DOS状态下,我的屏幕没有滚动条,整屏即是50行,而clrscr只能清除1~25行,对26行起的区域丝毫不起作用,光标仍然是返回到第一行第一列。我在多台机器上得到的均是这么一个结论(即不能清除第26行起的区域)。所以我想,是不是clrscr函数本身的问题,即设计之初就只考虑25行,该函数最大也就只能清除25行;或者是可以通过什么参数的设置以使得它能清除更大的区域?谢谢大家!
----------------解决方案--------------------------------------------------------
大家好,谁能给点建议,谢谢
----------------解决方案--------------------------------------------------------