Tomsk Sysadmins Forum
Unix => Программирование => Topic started by: Konstantine on February 14, 2008, 22:49:39
-
Ребят у меня такая проблема сижу пишу программочку прорисовки текстового меню, использую ESC последовательности, ну так вот я хочу функцией getch() ловить все нажатия клавиш с клавиатуры т.к. функции scanf, getc, getchar работают только после нажатия клавиши ENTER, тобишь с их помощью можно строки сразу закидывать в буфер разом, это канешно круто, но в моём случае мне нужно чтобы я пользовался стрейфами и курсор бегал по меню и только когда мне нужно зайти в под меню я жал ENTER.
Так самое смешное, то что я не могу подключить библиотеку #include <conio.h> в которой находиться функция getch(), потому что так таковой у меня нету ВООБЩЕ НА ВСЁМ КОМПЕ Я УЖЕ ПРОВЕРИЛ, я и через синоптик пытался её найти (я в ALT Linux`е работаю), и apt-get`ом пробовал ничё не помогает.
Я уже Яндекс за дро..... в пойсках альтернативной функции которая бы сразу считывала код нажатой клавиши... 23метра внешки за день причём не скачивал ни чего просто читал ссылки....
Ребят я сделал по моему всё что я знал, если кто знает, что ещё можно сделать или какая есть альтернативная функция помогите пожалуйста...
Заранее спасибо ваш Константин.
-
Я уже Яндекс за дро..... в пойсках альтернативной функции которая бы сразу считывала код нажатой клавиши... 23метра внешки за день причём не скачивал ни чего просто читал ссылки....
Ребят я сделал по моему всё что я знал, если кто знает, что ещё можно сделать или какая есть альтернативная функция помогите пожалуйста...
Ну так вместо того чтобы дрочить у Яндекса используйте гугль http://www.google.ru/search?q=conio.h (http://www.google.ru/search?q=conio.h)
http://en.wikipedia.org/wiki/Conio.h (http://en.wikipedia.org/wiki/Conio.h)
в общем пользуйте curses или ncurses.
-
Ну так вместо того чтобы дрочить у Яндекса используйте гугль http://www.google.ru/search?q=conio.h (http://www.google.ru/search?q=conio.h)
http://en.wikipedia.org/wiki/Conio.h (http://en.wikipedia.org/wiki/Conio.h)
в общем пользуйте curses или ncurses.
Кстати я с ncurses ещё три дня назад столкнулся думал решить проблему так через Синоптик я нашёл пакет ncurses и поставил их, но gcc компиль всеравно не нашёл ncurses у меня в библиотеках.
И как я ща почитал в ncurses нет функции getch() или getch()
-
Кстати я с ncurses ещё три дня назад столкнулся думал решить проблему так через Синоптик я нашёл пакет ncurses и поставил их, но gcc компиль всеравно не нашёл ncurses у меня в библиотеках.
Подозреваю, что Вы ncurses-devel не поставили, потому компилятор и не может найти заголовочных файлов.
И как я ща почитал в ncurses нет функции getch() или getch()
Ну так Вы читать умеете?
conio.h is a header file used in old MS-DOS compilers to create TUI interfaces....Most C compilers that target UNIX and Linux do not have this header and do not supply the concomitant library functions. Вы еще пожалуйтесь что в линуксе нет хидеров для WinAPI...
Вы похоже используете какую-то очень древнюю книжку по написанию приложений для MS-DOS.
См. например, http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html (http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html)
#include <ncurses.h>
int main()
{
initscr(); /* Start curses mode */
printw("Hello World !!!"); /* Print Hello World */
refresh(); /* Print it on to the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
return 0;
}
-
спасибо большое ток я не книжку использую я вообще ни чё не использую линух неделю назад токо поставил вот и разбираюсь чё к чему ....
и кстати щас через синоптик переустановил ncurses попробовалсклмпилить всё заработало )))
токо что то не так как надо работает представляешь программа не ждёт нажатия клавиши а сама её жмёт я уже проверочку вставил:
//#include <conio.h>
#include <stdio.h>
#include <curses.h>
void menucolor (int attr, int fg, int bg);
void menu (int kyrsor);
void PKursor (char *pozich);
int main()
{ int kyrsor=0,ESC,c,i;
char command[13];
PKursor(H);
menu (0);
for(i=0;i<10;i++)
{
c=getch();
printf("getch() =%d\n",c);
}
return 0;
}
и выводит он мне:
getch() =-1
getch() =-1
getch() =-1
getch() =-1
getch() =-1
getch() =-1
getch() =-1
getch() =-1
getch() =-1
может в этой библиотеке getch() не int значение возвращает или как а ?
-
блин обидно.....
И проблему так и не решил, и подруга уже заснула ... заждалась....
какгриться за двумя зайцами погонишься от обоих и отхватишь...
-
блин обидно.....
И проблему так и не решил, и подруга уже заснула ... заждалась....
какгриться за двумя зайцами погонишься от обоих и отхватишь...
Вы документацию уже начните читать!
#include <stdio.h>
#include <curses.h>
int main()
{
int i;
char c;
initscr();
for (i=0; i<10; i++)
{
c = getch();
printw("\ngetch() =%d\n",c);
refresh();
}
endwin();
return 0;
}
P.S. Пример работает, при том, что я ncurses вижу в первый раз, а Цэ во второй.....