Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Очистка экрана в консоли


Автор: Гость_Intro 4.8.2004, 18:52
Подскажите пожалуйста функцию в Visual C++ отвечающую за очистку экрана от всех символов в том числе и от всех endl.
Заранее благодарен.

Автор: _hunter 4.8.2004, 19:07
void clrscr(void)

Автор: lynx_916 4.8.2004, 20:54
она отчищает активное окно.

Автор: Гость_Intro 5.8.2004, 06:34
В большинстве форумах мне твердят про clrscr(), но у меня в С++ от Майкрософта версии 6.0 --- она не хочет опозноваться какие бы я не включал заголовочные файлы и *.lib...
Есть ли альтернатива clrscr()???

Автор: _voron 5.8.2004, 07:37
Можно установить видеорежим, при этом экран будет очищен(весь экран, а не активное окно).

...
asm{
mov ax, 0x03
int 0x10
}
...

Причем работать это будет быстрее, чем clrscr();

Автор: srd 5.8.2004, 11:01
Код

void clrscr(void)
{
   system("cls");
}


Автор: _hunter 5.8.2004, 16:05
_voron, ты ткое под ХР запусти wink.gif

Гость_Intro, ты conio.h подключал?

вот, на крайняк исходник:
Код
/*------------------------------------------------------------------------
* filename - clrscr.c
*
* function(s)
*        clrscr - clears text mode window
*-----------------------------------------------------------------------*/

/*
*      C/C++ Run Time Library - Version 11.0
*
*      Copyright (c) 1987, 2002 by Borland Software Corporation
*      All Rights Reserved.
*
*/

/* $Revision: 9.4.2.1 $        */

#define INCL_CON
#include <ntbc.h>

#include <_video.h>
#include <conio.h>

/*------------------------------------------------------------------------*

Name            clrscr - clears text mode window

Usage           void clrscr(void);

Prototype in    conio.h

Description     clrscr clears the current text window and places the cursor
               in the upper left-hand corner(at position 1,1).

Return value    None

*--------------------------------------------------------------------------*/

void _RTLENTRY _EXPFUNC clrscr(void)
{
   COORD c;
   DWORD len, wr;

   if (_video.windowx1 == 0 && _video.windowy1 == 0 &&
       _video.windowx2 == _video.screenwidth - 1 &&
       _video.windowy2 == _video.screenheight - 1)
   {
       /* Window is full-screen, so we can clear it in two calls.
        */
       len = _video.screenwidth * _video.screenheight;
       c.X = c.Y = 0;
       FillConsoleOutputCharacter(_hout, ' ', len, c, &wr);
       FillConsoleOutputAttribute(_hout, _video.attribute, len, c, &wr);
   }
   else
   {
       /* Window is not full-screen, so clear it a line at a time.
        */
       len = _video.windowx2 - _video.windowx1 + 1;
       c.X = _video.windowx1;
       for (c.Y = _video.windowy1; c.Y <= _video.windowy2; c.Y++)
       {
           FillConsoleOutputCharacter(_hout, ' ', len, c, &wr);
           FillConsoleOutputAttribute(_hout, _video.attribute, len, c, &wr);
       }
   }

   gotoxy(1, 1);
}

может поможет smile.gif

Автор: NiJazz 6.8.2004, 07:27
_hunter
Ведь clrscr() есть только в Turbo C++. Или нет?

Можно так:
Код
for (int i = 0; i < 25; i ++)
{
  cout << endl;
  // или printf("\n");
}

Добавлено @ 07:30
srd
Разве system - это не Linux? Такое в VC++ работать не будет.

Автор: srd 6.8.2004, 07:41
Функция system входит в стандарт и должна быть в любой реализации C Runtime Library. В VC++ это прекрасно работает. Наоборот, команды "cls" в Линуксах нет smile.gif Может будет работать system("clear"), но я такое не пробовал.

Не нравится system, можно обойтить средствами WINAPI:

Код

#include <windows.h>

void clrscr(void)
{
   COORD coords = {0, 0};
   HANDLE = GetStdHandle(STD_OUTPUT_HANDLE);
   CONSOLE_SCREEN_BUFFER_INFO csbi;
   GetConsoleScreenBufferInfo(handle, &csbi);
   DWORD sz = csbi.dwSize.X * csbi.dwSize.Y;
   DWORD dw;
   FillConsoleOutputCharacter(handle, ' ', sz, coords, &dw);
   FillConsoleOutputAttribute(handle, csbi.wAttributes, sz, coords, &dw);
)

Автор: _hunter 6.8.2004, 17:19
в линуксах все тот же clrscr smile.gif

насчет Turbo C не знаю но она точно работает в Builder' e

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)