Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Где найти getch()?  (Прочитано 7025 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Где найти getch()?
« : 20 Марта 2008, 20:24:10 »
привет всем программерам! :)
подскажите где лежит getch()? мана по ней нету.
или кто знает функцию альтернативу?
спасибо

Оффлайн mors

  • Новичок
  • *
  • Сообщений: 27
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #1 : 20 Марта 2008, 20:41:43 »
std::cin>>c;
Не использую Windows на домашнем компьютере с 3 июня 2007 /// Ubuntu 7.04 → 7.10 → 8.04 → 8.10 → 9.04

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #2 : 20 Марта 2008, 20:51:13 »
getc(), getchar() если нужно именно C.
Если С++, то предпочтительнее то, что предложил pluton.

man getc
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #3 : 20 Марта 2008, 20:56:42 »
mors, Lion-Simba, эти варианты мне не подходят, т.к. у getch() была одна дополнительная фишка: она ждёт нажатия символа, и сразу же возвращает управление в прогу. а cin и getchar() - нужно ещё нажать энтер.

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #4 : 20 Марта 2008, 21:43:35 »
#include <conio.h>

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #5 : 20 Марта 2008, 21:48:10 »
#include <conio.h>
не работает. пишет файл не найден. вроде все инклуды установлены

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #6 : 20 Марта 2008, 21:55:39 »
сорри, маленько не так
apt-get install libncurses5-dev
и потом
#include <curses.h>

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #7 : 20 Марта 2008, 22:02:33 »
12d3, спасибо за ответ, попробую.
но появился вопрос - раз надо доустанавливать библиотеку, то она не стандартная. а всё-таки есть стандартная функция? getch() была в досовском борландском компилере.
второй вопрос - как мою скомпиленную прогу запустить на другой оси, где нет этой либы? и как её скомпилить на другой оси? (интернета там нет - скачать не выйдет, плюс дистрибутив rpm-ный). короче говоря, какие нужны файлы и куда их кидать?
заранее спасибо

Thread

  • Гость
Re: Где найти getch()?
« Ответ #8 : 20 Марта 2008, 22:04:14 »
1. Стандарт не предусматривает небуферизованного ввода/вывода, afaik.
2. Про борланд/дос лучше забыть
3. Скомпиленную - практически никак. Из исходников - без проблем. Думаю, libncurses кросс-платформенный.

P.S. Если другая ось - это тоже линукс и та же архитектура, то, возможно, прокатит сборка с -static.
« Последнее редактирование: 20 Марта 2008, 22:05:58 от a-v »

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #9 : 20 Марта 2008, 22:12:52 »
насчет пункта 3 - для оффтопа есть ncurses

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #10 : 20 Марта 2008, 22:21:47 »
у меня Ubuntu 7.10. другая ось - тоже линукс (кажися, slackware)
2. Про борланд/дос лучше забыть
эт ясно. просто в проге понадобилась ожидание нажатия клавиши
3. Скомпиленную - практически никак.
а вот это плохо
возможно, прокатит сборка с -static.
этот ключ статически линкует либы в исполняемый файл?
Из исходников - без проблем.
для этого какие файлы и куда кидать на другой машине?
« Последнее редактирование: 20 Марта 2008, 22:30:47 от pluton »

Thread

  • Гость
Re: Где найти getch()?
« Ответ #11 : 20 Марта 2008, 22:44:50 »
возможно, прокатит сборка с -static.
этот ключ статически линкует либы в исполняемый файл?

Вроде да, сам не пробовал. man gcc.

Из исходников - без проблем.
для этого какие файлы и куда кидать на другой машине?

Натурально, исходники + библиотеки, от которых код зависит + заголовочные файлы к этим библиотекам.

Оффлайн Garfeild

  • Активист
  • *
  • Сообщений: 744
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #12 : 20 Марта 2008, 23:55:58 »
getch() не входит в стандарт C.  Можно самому написать функцию, дополняющую функционал getchar().


Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #13 : 23 Марта 2008, 15:41:33 »
Код: (http://forum.codenet.ru/showthread.php?t=29717) [Выделить]
#include <stdio.h>
#include <unistd.h>
#include <termios.h>

int getch()
{
int ch;
struct termios oldt, newt;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}

int main ()
{
char ch;
ch = getch();
printf("%c\n", ch);
return 0;
}
« Последнее редактирование: 23 Марта 2008, 15:49:07 от Yurror »

Оффлайн pluton

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Где найти getch()?
« Ответ #14 : 24 Марта 2008, 19:30:10 »
Yurror, большое спасибо!!!
зы. если будет время, дизасмю эту функцию из досовского компилера

 

Страница сгенерирована за 0.043 секунд. Запросов: 22.