zoukankan      html  css  js  c++  java
  • clrscr( )用法

    函数名: clrscr

    功  能: 清除文本模式窗口,清屏的意思,即把之前显示出的文字字符去掉,是clear screen的简写 

    用  法: void clrscr(void);

    程序例:
    #include <conio.h>
    int main  (void)
    {
      int i;
      clrscr();
      for (i = 0; i < 20; i++)
      {
        printf("%d ", i);
      }  
      cprintf(" Press any key to clear screen");
      getch();
      clrscr();
      printf("The screen has been cleared!");
      getch();
      return 0;
    }

    注意:

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

    另解:

    在VC中无法调用该函数,有下列办法:
    1.  #include <windows.h>
    system("cls");
    这种办法的缺点是程序额外运行系统程序执行清屏操作,延长了程序执行时间。
     
    2.自己写函数,这种办法比较快。
    这是从微软MSDN得到的方法:
    /* Standard error macro for reporting API errors */
    #define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s
    on line %d ", __FILE__, GetLastError(), api, __LINE__);}
    void cls( HANDLE hConsole )
    {
    COORD coordScreen = { 0, 0 }; /* here's where we'll home the
    cursor */
    BOOL bSuccess;
    DWORD cCharsWritten;
    CONSOLE_SCREEN_BUFFER_INFO csbi; /* to get buffer info */
    DWORD dwConSize; /* number of character cells in
    the current buffer */
    /* get the number of character cells in the current buffer */
    bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );
    PERR( bSuccess, "GetConsoleScreenBufferInfo" );
    dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
    /* fill the entire screen with blanks */
    bSuccess = FillConsoleOutputCharacter( hConsole, (TCHAR) ' ',
    dwConSize, coordScreen, &cCharsWritten );
    PERR( bSuccess, "FillConsoleOutputCharacter" );
    /* get the current text attribute */
    bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );
    PERR( bSuccess, "ConsoleScreenBufferInfo" );
    /* now set the buffer's attributes accordingly */
    bSuccess = FillConsoleOutputAttribute( hConsole, csbi.wAttributes,
    dwConSize, coordScreen, &cCharsWritten );
    PERR( bSuccess, "FillConsoleOutputAttribute" );
    /* put the cursor at (0, 0) */
    bSuccess = SetConsoleCursorPosition( hConsole, coordScreen );
    PERR( bSuccess, "SetConsoleCursorPosition" );
    return;
    }
     
    这是我在CSDN里面看到的,并适当的做了添加:
    /*清屏函数*/
    #include <stdio.h>
    #include <windows.h>
    #define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s on line %d ", __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;
    }
    /*测试*/
    void main(){
      printf("1111") ;
      clrscr() ;
    }
  • 相关阅读:
    HDU1213How Many Tables并查集
    Redis新的存储模式diskstore
    GPFS文件系统笔记
    redis持久化
    360安全卫士qurl.f.360.cn分析
    [原创]解决DataSet的GetXml()方法空列不返回问题
    在多台服务器上简单实现Redis的数据主从复制
    史航416随笔
    史航416实验1总结
    史航416第二次作业总结
  • 原文地址:https://www.cnblogs.com/followyourdream/p/3328552.html
Copyright © 2011-2022 走看看