как вернуться на какую-то позицию, уже напечатанную на С? - PullRequest
1 голос
/ 05 ноября 2008

Позвольте нам иметь ситуацию, в которой следующая программа печатает около 10 строк #

for(i=0;i<10;i++)
prinf("\n#");

Теперь, как вернуться к 5-й строке, отредактировать этот # и изменить его цвет, не очищая экран и не стирая 5 нижних строк?

Я пытался

window(5,0,20,20);
textcolor(GREEN);
cprintf("#");

но это не редактирование, а печать на стороне оригинала. Почему?

есть ли другой способ сделать это и динамически изменить цвет уже напечатанного текста? Пожалуйста, помогите мне .. моя среда турбо C на Windows

Ответы [ 4 ]

3 голосов
/ 05 ноября 2008

Похоже, вы смешиваете printf и другую выходную библиотеку - это не рекомендуется. Printf ожидает отправки в символьный терминал, в то время как соответствующая выходная библиотека может ошибочно предположить, что она имеет монопольный доступ (и может неправильно работать).

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

Функция окна не делает то, что вам нужно, поскольку она только устанавливает область, в которой курсор может изменять текст - она ​​не перемещает курсор, вам нужно использовать другие библиотечные функции.

1 голос
/ 12 ноября 2008

оконная функция обычно создает окно из 1-го пикселя с двумя координатами, т.е. в вашем примере (5,0), до пикселя, на который указывают следующие 2 координаты. поэтому ваша программа должна работать

попробовать или использовать gotoxy ()

1 голос
/ 05 ноября 2008

-1: Несколько советов для размещения вопросов с домашними заданиями:

1) Правильно сформулируйте вопрос! Размещенный код не работает, как указано в описании:

 for(i=0;i<10;i++)
    prinf("#");

Это напечатает 10 # символов в одной строке, так как нет символа конца строки. В оригинальном описании говорится о «печати 10 строк».

2) Укажите необходимые данные: в какой среде вы используете: Windows? Linux? Какой компилятор? Это оконная или текстовая среда?

3) STFW перед публикацией. Найдите «ANSI Escape Sequence» или «позиционирование курсора».

0 голосов
/ 05 ноября 2008

возможно-

cprintf("\b#");

'b' для возврата

...