当前位置: 代码迷 >> C语言 >> 为什么clrscr()只能清屏25行???
  详细解决方案

为什么clrscr()只能清屏25行???

热度:307   发布时间:2007-10-17 18:42:21.0
为什么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();
}

搜索更多相关的解决方案: clrscr  include  void  int  main  

----------------解决方案--------------------------------------------------------
改成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行;或者是可以通过什么参数的设置以使得它能清除更大的区域?谢谢大家!
----------------解决方案--------------------------------------------------------
大家好,谁能给点建议,谢谢
----------------解决方案--------------------------------------------------------