簡體   English   中英

實現clrscr()函數以了解其工作原理

[英]Implementing the clrscr() function to understand its working

我試圖制作內置函數的副本並在其名稱中添加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();
}

clrscr()的實現可能取決於控制台應用程序運行的環境。 通常,它將ClearScreen控制字符(0x0C)發送到控制台驅動程序,該命令實際上會清除屏幕。

驅動程序知道要清除的字符空間以及所有要重置的屬性(閃爍,下划線等)。

如果您不希望驅動程序處理0x0C,則可以通過調用printf(“ \\ n”)來模擬50次。 但是調用50x80調用poutchar('')與調用clrsrc()並不相似,因為在滾動屏幕內容后,光標將前進一倍,這可能會將光標置於下一行。

此外,您還應該考慮屏幕的行為取決於實現。 當光標位置在右列中並且您輸出一個字符時,光標位置可能會停留在右邊緣或可能導致換行。 當光標位置位於右下角時,下一個字符可能會引起新行,包括將屏幕內容滾動一行。

最好的方法是想象clrscr()會做什么,並使其發揮作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM