Реализация функции clrscr () для понимания ее работы - PullRequest
0 голосов
/ 15 июля 2010

Я пытаюсь сделать копии встроенных функций и добавляю топор к их имени, чтобы я мог понять, как работают все функции. Когда я пишу функцию для 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();
}

1 Ответ

4 голосов
/ 15 июля 2010

Реализация clrscr () может зависеть от среды, в которой работает ваше консольное приложение. Обычно он отправляет управляющий символ ClearScreen (0x0C) в драйвер консоли, который фактически очищает экран.

Драйвер знает о символьном пространстве, которое необходимо очистить, а также все атрибуты (мигание, подчеркивание, ...) для сброса.

Если вы не хотите, чтобы драйвер обрабатывал 0x0C, вы можете имитировать это с 50-кратным вызовом printf ("\ n"). но вызов 50x80 вызовом poutchar ('') не похож на вызов clrsrc (), так как курсор будет перемещаться на один, который может поместить его в следующую строку после прокрутки содержимого экрана.

Далее следует учитывать, что поведение экрана зависит от реализации. Когда позиция курсора находится в правом столбце, и вы выводите один символ, позиция курсора может оставаться на правом краю, или это может вызвать новую строку. Если курсор находится в нижнем правом углу, следующий символ может вызвать новую строку, включая прокрутку содержимого экрана на одну строку.

Лучшим способом было бы представить, что делает clrscr (), и позволить ему выполнить свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...