我正在尝试制作内置函数的副本并将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();
}
答案 0 :(得分:4)
clrscr()实现可能取决于控制台应用程序运行的环境。通常它会将ClearScreen控制字符(0x0C)发送到控制台驱动程序,实际上会清除屏幕。
驱动程序知道要清除的字符空间以及要重置的所有属性(闪烁,下划线等)。
如果您不希望驱动程序处理0x0C,您可以使用50次调用printf(“\ n”)来模仿它。但是调用50x80调用poutchar('')与调用clrsrc()并不相似,因为在滚动屏幕内容之后光标将被提前一个可能将它放在下一行中。
此外,您应该注意,屏幕的行为取决于实现。当光标位置在右列并输出一个字符时,光标位置可能会保持在右边缘,或者可能会导致换行。当光标位置在右下角时,下一个字符可能会产生一个新行,包括将屏幕内容滚动一行。
最好的方法是成像clrscr()会做什么并让它成功。