实现clrscr()函数以了解其工作原理

时间:2010-07-15 06:37:50

标签: c++ c windows

我正在尝试制作内置函数的副本并将ax添加到他们的名字中,这样我就能理解每个函数的工作原理。在为clrscr()编写函数时,我对它是如何工作感到困惑。它是否使用了2个嵌套循环并打印(“”)即整个屏幕上的空间或在屏幕上打印(“\ n”)?或者是什么? 我试过这个:

#include<stdio.h>
#include<conio.h>
void main(void)
{

printf("press any key to make clrscr() work");
getch();
for(int i=0;i<50;i++)
    {
    printf("\n");
    }
    // to make the screen come to 1,1
    gotoxy(1,1);
    getch();
}

1 个答案:

答案 0 :(得分:4)

clrscr()实现可能取决于控制台应用程序运行的环境。通常它会将ClearScreen控制字符(0x0C)发送到控制台驱动程序,实际上会清除屏幕。

驱动程序知道要清除的字符空间以及要重置的所有属性(闪烁,下划线等)。

如果您不希望驱动程序处理0x0C,您可以使用50次调用printf(“\ n”)来模仿它。但是调用50x80调用poutchar('')与调用clrsrc()并不相似,因为在滚动屏幕内容之后光标将被提前一个可能将它放在下一行中。

此外,您应该注意,屏幕的行为取决于实现。当光标位置在右列并输出一个字符时,光标位置可能会保持在右边缘,或者可能会导致换行。当光标位置在右下角时,下一个字符可能会产生一个新行,包括将屏幕内容滚动一行。

最好的方法是成像clrscr()会做什么并让它成功。