我试图复制内置函数,并在其名称中添加一个x,以便能够理解每个函数的工作方式。在为clrsrc()编写函数时,我对它的工作方式感到困惑。它是使用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();
}

最佳答案

clrsrc()实现可能取决于控制台应用程序运行的环境。通常它会将清除屏幕控制字符(0x0C)发送到控制台驱动程序,该驱动程序实际上会清除屏幕。
驱动程序知道要清除的字符空间以及要重置的所有属性(闪烁、下划线…)。
如果您不想让驱动程序处理0x0C,您可以通过调用printf(“\n”)50次来模拟这个过程。但是,调用50x80调用poutchar('')与调用clrsrc()不同,因为光标将向前移动一个指针,在滚动屏幕内容后,该指针可能会放在下一行中。
此外,您还应该注意,屏幕的行为取决于实现。当光标位置在右列中并且输出一个字符时,光标位置可能会停留在右边缘,或者可能会导致一个新行。当光标位置在右下角时,下一个字符可能会导致一个新行,包括将屏幕内容滚动一行。
最好的方法是想象clrsrc()会做什么,让它完成它的工作。

10-06 15:53