clrscr

clrscr

clrscr,即清除文本模式窗口,清屏的意思,就是把之前顯示出的文字字元去掉,跟cmd裡面的清屏的功能是一樣的,實際上是clear screen的簡寫。

用法介紹


void clrscr(void);
程序例:
int main ()
{
int i;
clrscr();
for (i = 0; i < 20; i++);
cprintf("%d\r\n", i);
cprintf("\r\nPress any key to clear screen");
clrscr();
cprintf("The screen has been cleared!");
getch();
return 0;
}

注意內容


①只有在Turbo C 中可以運行!
②在Turbo C++ 中,需要先另存為(save as).C格式,才能使用。

另解方法


VC中無法調用該函數,有下列辦法:
1. #include
system("cls");
這種辦法的缺點是程序額外運行系統程序執行清屏操作,延長了程序執行時間。
2.自己寫函數,這種辦法比較快。
這是從微軟MSDN得到的方法:
#define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s \
on line %d\n", __FILE__, GetLastError(), api, __LINE__);}
void cls(HANDLE hConsole)
{
COORD coordScreen = {0, 0};
BOOL bSuccess;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
bSuccess = GetConsoleScreenBufferInfo(hConsole, &csbi);
PERR(bSuccess, "GetConsoleScreenBufferInfo");
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
bSuccess = FillConsoleOutputCharacter(hConsole, (TCHAR) ' ',
dwConSize, coordScreen, &cCharsWritten);
PERR(bSuccess, "FillConsoleOutputCharacter");
bSuccess = GetConsoleScreenBufferInfo(hConsole, &csbi);
PERR(bSuccess, "ConsoleScreenBufferInfo");
bSuccess = FillConsoleOutputAttribute(hConsole, csbi.wAttributes,
dwConSize, coordScreen, &cCharsWritten);
PERR(bSuccess, "FillConsoleOutputAttribute");
bSuccess = SetConsoleCursorPosition(hConsole, coordScreen);
PERR(bSuccess, "SetConsoleCursorPosition");
return;
}
或者
#include
#include
#define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s on line %d\n", __FILE__,GetLastError(), api, __LINE__);}
void MyCls(HANDLE) ;
inline void clrscr(void)
{
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
MyCls(hStdOut);
return;
}
void MyCls(HANDLE hConsole)
{
COORD coordScreen={0,0};//設置清屏后游標返回的屏幕左上角坐標
BOOL bSuccess;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;//保存緩衝區信息
DWORD dwConSize;//當前緩衝區可容納的字元數
bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//獲得緩衝區信息
PERR(bSuccess,"GetConsoleScreenBufferInfo");
dwConSize=csbi.dwSize.X * csbi.dwSize.Y;//緩衝區容納字元數目
//用空格填充緩衝區
bSuccess=FillConsoleOutputCharacter(hConsole,(TCHAR)' ',dwConSize,coordScreen,&cCharsWritten);
PERR(bSuccess,"FillConsoleOutputCharacter");
bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//獲得緩衝區信息
PERR(bSuccess,"ConsoleScreenBufferInfo");
//填充緩衝區屬性
bSuccess=FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,&cCharsWritten);
PERR(bSuccess,"FillConsoleOutputAttribute");
//游標返回屏幕左上角坐標
bSuccess=SetConsoleCursorPosition(hConsole,coordScreen);
PERR(bSuccess,"SetConsoleCursorPosition");
return;
}
int main()
{
printf("1111") ;
clrscr() ;
return 0;
}