Вывод строки в указанной позиции (Как вывести строку в указанной позиции)

Модератор: Модераторы разделов

Аватара пользователя
alektrik
Сообщения: 4
ОС: Када как... =)

Вывод строки в указанной позиции

Сообщение alektrik »

Такой маленький вопросик: Как в консоле вывести строку в указанной позиции (x, y) на экране???

P.S. юзаю FreeBSD
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вывод строки в указанной позиции

Сообщение elide »

вообще говоря, никак.
но в большинстве случаев curses будет работать.
можно напрямую через terminfo. man tputs и далее по ссылкам.
слава роботам!
Спасибо сказали:
Аватара пользователя
sergeyvp
Сообщения: 807
ОС: ubuntu

Re: Вывод строки в указанной позиции

Сообщение sergeyvp »

elide писал(а):
01.04.2007 17:02
вообще говоря, никак.

Да нет, сделать можно.
В книге "Программирование для UNIX" (Рочкинд) даже вроде написано как это сделать.
У меня просто не хватит мозгов коротко это изложить, а перепечатывать всю главу из книги лень :)
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вывод строки в указанной позиции

Сообщение elide »

Да нет, сделать можно
если у тебя есть терминал, который может только последовательно выдавать символы, изредка переводя строку и возвращая каретку (матричный принтер, например), то вообще никак нельзя. хоть ты три книжки прочитай...
слава роботам!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Вывод строки в указанной позиции

Сообщение serzh-z »

Кстати, любопытно - как curses/ncurses работают...
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Вывод строки в указанной позиции

Сообщение Liksys »

Есть управляющие последовательности. Для каждого терминала они свои. Последовательности парсятся из базы terminfo. Используя эти последовательности, можно управлять курсором на экране , выводить символы и устанавливать цвета.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вывод строки в указанной позиции

Сообщение elide »

serzh-z
это просто большая и довольно нетривиальная обёртка над tputs и ещё несколькими.
слава роботам!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Вывод строки в указанной позиции

Сообщение serzh-z »

Хочется подытожить: грубо говоря, сущестует более или менее определенный или стандартизованный набор тех самых escape-последовательностей (которые вставляются приложением напрямую в поток, либо неявно, через программные интерфейсы наподобие *curses), которые средствами terminfo сотоварищи (tputs и т.д.) мепятся на различные фичи (для большинства типов терминалов схожие - переместить курсор, изменить цвет и т.д.) терминалов. Ага?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вывод строки в указанной позиции

Сообщение elide »

грубо говоря, сущестует более или менее определенный или стандартизованный набор тех самых escape-последовательностей (которые вставляются приложением напрямую в поток, либо неявно, через программные интерфейсы наподобие *curses), которые средствами terminfo сотоварищи (tputs и т.д.) мепятся на различные фичи (для большинства типов терминалов схожие - переместить курсор, изменить цвет и т.д.) терминалов. Ага?
наоборот.
есть более-менее стандартный набор фич, которые, если поддерживаются текущим терминалом, мапятся на какие-то escape-последовательности (: последовательности при этом могут быть совершенно произвольные.
хотя иногда они и совпадают со стандартными ANSI escape codes.
слава роботам!
Спасибо сказали:
Аватара пользователя
vi.rus0.log
Сообщения: 27
ОС: Ubuntu 7.04 Feisty

Re: Вывод строки в указанной позиции

Сообщение vi.rus0.log »

Это если говорить о C и каком нибудь стандартном терминале типа xterm это можно реализовать с омощью специально заточенных под это библиотек (их много поиши где нить на sf.net)(пример любимый всеми mc он там вообще что то своё мутит). Ну а если конкретнее мой одногрупник умудрился это сделать с помошью стандартной библиотеки conio.h
каждый способен на многое, осталось только забыть фразу "не могу"
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вывод строки в указанной позиции

Сообщение elide »

vi.rus0.log
сразу видно грамотного специалиста...
любимый всеми mc он там вообще что то своё мутит
mc работает либо поверх curses, либо поверх slang. ничего своего он не мутит.
это сделать с помощью стандартной библиотеки conio.h
во-первых, conio.h - это не библиотека. это один единственный хедер.
во-вторых, этот кусок мусора ни разу не является "стандартным".
и в-третьих, я не видел ни одной приличной реализации этой ерунды под *nix. очевидно потому, что она нахрен никому не нужна.
возникает определённая уверенность в том, что узколобая обезьяна на аватаре нарисована неспроста.
слава роботам!
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Вывод строки в указанной позиции

Сообщение eduard_pustobaev »

vi.rus0.log писал(а):
06.04.2007 18:51
Ну а если конкретнее мой одногрупник умудрился это сделать с помошью стандартной библиотеки conio.h

Какой? Из Borland C++? С ней ещё что-либо делать можно. В той, что в minGW функций маловато, curses для винды помощнее будет. В Линукс тем более этой хрени не наблюдается.

P.S. Хотя мне conio нравится. Мегапростенькая либа, а для окошек несложных вполне хватало, как и для вещей типа сабжа. В curses всё-таки заморочек поболе будет.
В дисгармонии со вселенной.
Спасибо сказали: