Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Затирание последней строки в консоли 
:(
    Опции темы
Aizek
Дата 5.3.2009, 20:12 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Чтобы не плодить много тем, может кто подскажет, как затирать строку выведенную в консоле? Читал тут много всяких тем, понял что еще под разные платформы может быть написано, если кто знает как под линукс написать, на чистом Си.
PM MAIL   Вверх
xvr
Дата 6.3.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Aizek @ 5.3.2009,  20:12)
Чтобы не плодить много тем, может кто подскажет, как затирать строку выведенную в консоле? Читал тут много всяких тем, понял что еще под разные платформы может быть написано, если кто знает как под линукс написать, на чистом Си.

Какую строку? Если текущую, то
Код

printf("\r%*c\r",80,' ');
Для затирания последнего знака (с текущего места) и возврата назад
Код

printf("\b \b");
Для затирания произвольной строки - никак (ОС зависимо, можно использовать библиотеку curses)

PM MAIL   Вверх
Aizek
Дата 6.3.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



В строке много чего отображается, подобие линксовой софтины top надо оформить. Делал с \б но успешно затирает только затирает только кусок строки, переносимый на следующую строчку. 
только что проверил первый вариант, такая же проблема. А что значит 80? количество затираемых символов? Или заменяемых на пробел? Просто там должна отображаться другая строка через интервал...

Добавлено через 6 минут и 16 секунд
В общем первый вариант работает точно так же как и второй. Если строка не вмешается в один заход в консоль, и ее кусок переносится на другую строку, то затирается только перенесенный кусок. Логично в принципе) 
PM MAIL   Вверх
xvr
Дата 6.3.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Aizek @ 6.3.2009,  18:33)
В строке много чего отображается, подобие линксовой софтины top надо оформить. 

top использует curses, которые в свою очередь используют управляющие последовательности терминала, где работают. Если нужно для Линукса, то curses самое то (это стандартное для Линукса средство)
Цитата

Делал с \б но успешно затирает только затирает только кусок строки, переносимый на следующую строчку. 

\b может переползать на предыдущую строку (а может и не переползать)
Цитата

только что проверил первый вариант, такая же проблема. 
С первым вариантом все надежнее - он гарантированно не будет переползать на предыдущую строку, т.е. сирать будет только текущую  smile 
Цитата

А что значит 80? количество затираемых символов?
 Да
Цитата

Или заменяемых на пробел? 
Это одно и то же. \r переводит позицию вывода в начало строки, далее все выводится поверх предыдущего содержимого

PM MAIL   Вверх
Aizek
Дата 6.3.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Цитата

top использует curses, которые в свою очередь используют управляющие последовательности терминала, где работают. Если нужно для Линукса, то curses самое то (это стандартное для Линукса средство)

Примерчик не подкинете?)
PM MAIL   Вверх
JackYF
Дата 7.3.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(Aizek @  5.3.2009,  19:12 Найти цитируемый пост)
Чтобы не плодить много тем

Модератор: Пожалуйста, один топик - один вопрос.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.