В Linux будет построчное чтение и с отображением символов
Функция getch() на самом деле будет все равно печатать все символы
то есть сначала ты наберешь целую строку символов, потом ENTER
и только потом getch() будет получать символы из буфера
Добавлено через 1 минуту
А conio.h есть только под Windows насколько я знаю
Сообщение от odip
В Linux будет построчное чтение и с отображением символов
Функция getch() на самом деле будет все равно печатать все символы
то есть сначала ты наберешь целую строку символов, потом ENTER
и только потом getch() будет получать символы из буфера
Добавлено через 1 минуту
А conio.h есть только под Windows насколько я знаю
неужели нет эквивалентной функции для linux? . В BORLAND C getch() работала как нужно.
То есть ждала ввода ОДНОГО символа и записывала результат без кнопки ENTER. Мне именно это и нужно. Нужно чтоб программа обрабатывала каждую клавишу без кнопки ENTER. Так же как и в паскале функция readkey; .Такая обязательно должна быть и в си ++ под линукс.
Ну так это Linux-терминал не дает
Это он делает построчное чтение !
Что-то было насчет того как переключить терминал в посимвольное чтение
но я не помню где
В ncurses точно должно быть что-то такое
polimorf96, чтоб терминал в линукс работал так, как ты хочешь — нужно отключить канонический режим. я приводил пример посимвольного чтения терминала без ожидания ENTER. поищи в этом разделе..
Я тут порылся — в ncurses есть функция getch().
Она работает правильно — то есть делает чтение только одного символа с отображением его
нужно только #include сделать
Сообщение от odip
Сообщение от niXman
ну посмотрел я пример. И зачем мне прописывать в исходнике:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#include #include #include #include #include struct TerminalOpt { TerminalOpt() { termios new_settings; tcgetattr(0,&stored_settings); new_settings = stored_settings; new_settings.c_lflag &= (~ICANON); new_settings.c_cc[VTIME] = 0; new_settings.c_cc[VMIN] = 1; tcsetattr(0,TCSANOW,&new_settings); } ~TerminalOpt() { tcsetattr(0,TCSANOW,&stored_settings); } termios stored_settings; }; int main() { { TerminalOpt term; // в этом блоке, отключен канонический режим. } // в этом включен. return 0; }
когда можно включить ncurses.h иными словами говоря -зачем изобретать велосипед?
Мне просто нужны была библиотека эквивалентная conio.h
Добавлено через 4 минуты
Сообщение от odip
Я тут порылся — в ncurses есть функция getch().
Она работает правильно — то есть делает чтение только одного символа с отображением его
нужно только #include сделать
Сообщение от polimorf96
вы явно не понимаете «что творите».
дело в том, что ncurses не является стандартом. и используя ее, вы обрекаете свой код во веке зависеть от нее
Сообщение от niXman
вы явно не понимаете «что творите».
дело в том, что ncurses не является стандартом. и используя ее, вы обрекаете свой код во веке зависеть от нее
может и не понимаю. я вообще если честно пока мало что понимаю язык изучаю не так давно.
Вот например я опять не понимаю какая «опастность» в моём коде если я включу ncurses.h ?
помоему обычный заголовочный файл такой же как и iostream.h или match.h . В чём опастность—.
Добавлено через 3 минуты
ни Р.Лафоре ни Т.А.Павловская не писали о «опастности включения библиотек и заголовочных файлов»
Сообщение от polimorf96
не обычный.
ncurses — сторонняя библиотека. она не входит в комплект поставки компилятора.
Сообщение от polimorf96
Сообщение от niXman
не обычный.
ncurses — сторонняя библиотека. она не входит в комплект поставки компилятора.
гавённые авторы. как и их книжки
получается, что все сторонние библиотеки не рабочие? смишно.
А каких же авторов вы предпочитаете? Ну и не такие уж они и гавяные. Ну ладно павловска может не очень но Р.Лафоре мне очень понравилась книга.
Сообщение от polimorf96
niXman, в состав компилятора вообще мало чего входит
ncurses — достаточно стандартная библиотека для Linux/UNIX
#include
Вот это кстати не более стандартно чем ncurses, учитывая то что ncurses — это просто обертка поверх интерфейса терминалов !
Сообщение от niXman
видимо мне что-то обьеснять -безполезно.
Добавлено через 2 минуты
Сообщение от niXman
не обычный.
ncurses — сторонняя библиотека. она не входит в комплект поставки компилятора.
гавённые авторы. как и их книжки
Сообщение от odip
но termios входит в комплект поставки библиотеки Си.
а ncurses — сторонняя библиотека.
Сообщение от odip
Сообщение от polimorf96
Какой еще библиотеки Си ?
В сорцах gcc есть ?
Добавлено через 2 минуты
Весь Linux (UNIX) состоит из кучи библиотек
Забиваем в google «Linux termios» — 72000 результатов
«Linux ncurses» — 719000 результатов
И что — после этого ты будешь утверждать что ncurses нельзя использовать ?
Сообщение от odip
давно известно, что кол-во поисковых запросов на прямую связанно с кол-вом проблем у пользователей.
так что эти цифры ни как не говорят о популярности
Сообщение от odip
2 Author
Столкнулся с такой же проблемой при переходе на Ubuntu. Тоже начал искать по форумам, в гугле. Тоже видел ссылки на ncurses. Но решил проблему я гораздо проще, чем вы. Я просто переоценил важной функции getch в моих программах. В случае когда это РЕАЛЬНО очень надо — можно использовать предложенный вариант с изменением параметров консоли,т.е. отключение канонического вида. Просто надо ли оно вам.
Насколько я выкопал в своё время, библиотека conio.h — создана для поддержки DOS приложений, является исключительно Windows’ской. Be easy =)
По поводу сторонних библиотек, автор, очевидно, не понял одну вещь: свои программы стоит делать максимально независимыми от других библиотек, исключая такие случаи как QT, GTK,WxWidgets и т.д. и те случаи, когда разработка аналогичного кода займёт больше ресурсов, чем просто покупка библиотеки. К примеру — библиотека анализа экономических параметров. Если вы с этим не знакомы — вам проще купить и использовать стороннюю библиотеку, чем написать свою.
А вообще, совет: пока учитесь — изобретайте велосипеды =)
Conio.h: Нет такого файла или каталога
#include <iostream> #include <conio.h> // Упр3.cpp:3:19: fatal error: conio.h: Нет такого файла.
в xcode
Знаю, что эта проблема обсуждалась уже много раз, но к сожалению я так и не смогла разобраться.
Не работает conio.h
при компиляции программы, изменяющей цвет шрифта и фона текста, появляются ошибки, что команды.
getche() и conio.h
Всем добрый вечер. Есть программа, нужно скомпиллировать под линуксом, но там нету библиотеки.
I used the IDE DEV C++ to compile C programs on Windows and I used the libraries and , but now I use Ubuntu and downloaded the Codeblocks, but it does not have these libraries. I just wanted to use some function similar to getch(), which is present in the library conio. Is there any similar library? And if there is how do I install?
conio.h is a non-standard Borland header. I got used to it in the short time I was developing in Windows as well (also with Bloodshed Dev-C++).
Note that this is only compatible file. I recommend to shift on curses.h file, which has lot many things, which are absent in conio.h file.
the best way, is create a symlink between curses.h and conio.h like:
ln -s /usr/include/curses.h /usr/include/conio.h
# debian/ubuntu $ sudo apt-get install libncurses5-dev libncursesw5-dev # voidlinux $ xbps-install -S ncurses-devel # archlinux $ pacman -Sy ncurses # redhate/fedora/suse. $ sudo yum install ncurses-devel
Here is a possible solution:
Do not dump these files to your present project directory, they will not work. Besides these are general compiler libraries that you may need to compile other projects, so better to make them available to the compiler and not the project.
I am using an Android handheld, if you are on PC please revise this response with wget and precise download links.
Adblock