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


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

Автор Тема: проблема с getche  (Прочитано 1930 раз)

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

Оффлайн janibeg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
проблема с getche
« : 14 Марта 2011, 15:53:10 »
есть текст программы, который в целом на 99% взят из мануалов.
#include <iostream>
#include <conio.h>
using namespace std;

int main() {
char c;
int i=0;
cout << "Enter the line till Enter key\n";
while ((c=getche())!='\n') {
i++;
}
cout <<i<<"\n";

return 0;
}

при компилировании выдает следующую ошибку:

roman@admin:~/Documents/Учебные/c/newtry$ g++ l4.c
l4.c:2:19: error: conio.h: Нет такого файла или каталога
l4.c: In function ‘int main()’:
l4.c:11: error: ‘getche’ was not declared in this scope

Если #include <conio.h> заменить на #include <stdio.h> и getche() на getchar() то все работает,
вопрос: как заставить пример работать с getche().
Заранее спасибо.
Версия Ubuntu: 9.10

Онлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5678
  • Все по палатам!
    • Просмотр профиля
Извините, я все еще учусь

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: проблема с getche
« Ответ #2 : 14 Марта 2011, 16:26:43 »
Собирать его Borland C компилятором.

Оффлайн janibeg

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: проблема с getche
« Ответ #3 : 14 Марта 2011, 16:33:18 »
Насколько я понял , conio.h в никс системах не используется, значит наверно меня сбило с толку
http://www.codenet.ru/progr/cpp/spru/getche.php
и там был пример в разделе Си/Си++ Unix/Linux
Пример.
           
               #include <conio.h>
               #include <ctype.h>
           
               int ch;
           
               /* берет символ с клавиатуры, вырабатывает его  эхо-отобра-
         жение  на консоли. Если это символ верхнего регистра, преобразует
         его к символу нижнего регистра и записывает старый символ */.
           
               ch = getche();
           
               if (isupper (ch))
                  cprintf ("\b%c", _tolower(ch));

Оффлайн ABEgorov

  • Участник
  • *
  • Сообщений: 130
    • Просмотр профиля
Re: проблема с getche
« Ответ #4 : 14 Марта 2011, 18:32:10 »
Есть же cin::get, если это C++, а если C, то зачем #include <iostream>? Хоть компилятор C++ и позволяет подключать C библиотеки, но не надо этим злоупотреблять! Либо C, тогда никаких iostream, либо C++, тогда никаких conio.h.

Оффлайн Мангуст

  • Любитель
  • *
  • Сообщений: 98
    • Просмотр профиля
Re: проблема с getche
« Ответ #5 : 14 Марта 2011, 18:44:29 »
Ну столько намешано.

1. conio.h - это только для Windows.
2. Небуферизированный ввод - вывод символов непереносим. На Linux и Windows он осуществляется разными средствами. И он реально не нужен. (За него отвечает в Windows conio.h).
3. Ну и мешать С и С++, конечно, можно, но только понимая, что делаешь.

Давай задачку полностью.

 

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