Conio h чем заменить
Перейти к содержимому

Conio h чем заменить

  • автор:

Альтернатива conio.h

Author24 — интернет-сервис помощи студентам

Добрый день. Сегодня установил себе Kubuntu 10.04 решил проверить как здесь с компилятором g++/gcc
Столкнулся с проблемой отсутствия библиотеки conio.h
Какая в никсах есть альтернатива этой библиотеки. Особенно функции

clrscr(); getch();

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

conio.h
где можно скачать библиотеку conio.h под линукс? с компилятором g++ не шла. Я все пакеты.

Conio.h и Linux
Всем большой прибольшой привет))) Хотелось бы поставить на второй комп Linux, но проблемма в том.

Аналог conio.h в netbeans 6.8
Всем коллегам доброго времени суток.Совсем недавно решил потестить netbeans 6.8 и столкнулся с.

Установка библиотеки conio.h.
Доброго времени суток! Возникла такая проблема. Нужно подключить библиотеку conio.h в ubuntu.

Эксперт С++

3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2

ЦитатаСообщение от -=FoBoS=- Посмотреть сообщение

ЦитатаСообщение от -=FoBoS=- Посмотреть сообщение

system(«clear»);
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Conio.h: Нет такого файла или каталога
#include <iostream> #include <conio.h> // Упр3.cpp:3:19: fatal error: conio.h: Нет такого файла.

Альтернатива itoa
Привет ребята, научите пользоваться sprintf. Есть у меня с примера часть кода, но он под виндовс и.

Альтернатива getch() под линукс.
Есть альтернатива getch() под линукс? В виндовс я делал так; int namber = getch(); Это очень.

Альтернатива sleep() из С++11
В языке Си есть функция Sleep() из windows.h, но она сторонняя и платформо-зависимая Как можно.

Или воспользуйтесь поиском по форуму:

Conio h чем заменить

Проблема с несовместимыми conio.h до сих пор часто всплывает при адаптации старых программ под Studio, применил вчера-сегодня вполне простое и адекватное решение.

Взять вот отсюда оба файла, включить в проект, заинклудить

#include "coniow.h"

#include

Конечно, рамочек из псевдографики в Юникодовском проекте не будет, придётся заменить на » * «, к примеру. Ну и вставку asm <> , не работающую в Studio, убрать.

Для корректного отображения русских букв при выполнении программы нужно щелкнуть правой кнопкой мыши по заголовку консольного окна, в контекстом меню выбрать пункт «Свойства» и установить шрифт «Lucida Console» и желаемый размер шрифта. Далее нажать кнопку OK. В XP возникает диалог с 2-мя вариантами — нужно сохранить настройки для всех окон с тем же именем, чтобы не выполнять эту настройку повторно.

Также убедитесь, что файл действительно сохранён в Юникоде (UTF-8, кодовая страница 65001).

Ну и все возможные варианты русификации консоли тоже подключены 🙂 В сумме, вот такой «борландовский консольный интерфейс» условно работает, исходник:

#include #include #include #include #include #include "coniow.h" typedef void (* FUN) (void); //Указатель на функцию void функция(void) - они будут выполнять пункты меню typedef struct ITEM < //Структура для элемента меню int x,y; //Столбец и строка консоли, куда выводим строку меню char *str; //Наименование пункта меню FUN f; //Функция, привязанная к пункту меню >; typedef struct WINDOW < //Окно вывода для всех функций int x1,y1,x2,y2,back,color; //Координаты двух углов, фоновый цвет, цвет вывода >; void Exit () < //Восстановить консоль по умолчанию и выйти window (1,1,80,25); textbackground(BLACK); textcolor(LIGHTGRAY); clrscr(); exit(0); >void flush () < //Очистить буфер клавиатуры fflush(stdin); >void DrawWindow (WINDOW w) < //Нарисовать окно w char c[]=; window (1,1,80,25); textbackground(w.back); textcolor(w.color); gotoxy (w.x1-1,w.y1-1); cprintf ("%c",c[0]); for (int i=w.x1; i gotoxy (w.x1-1,w.y2+1); cprintf ("%c",c[5]); for (int i=w.x1; i void DrawMenu (int n,ITEM *m,WINDOW w) < //Управление меню int sel=0,back=WHITE,inactivecolor=DARKGRAY,activecolor=RED; DrawWindow (w); //Нарисовать окно textbackground(back); //Поставить цвет фона меню for (int i=0; iwhile (1) < //Бесконечный цикл обработки нажатий клавиш gotoxy(m[sel].x,m[sel].y); textcolor(activecolor); cprintf ("%s",m[sel].str); //Перепечатать активный пункт выделенным цветом flush(); //очистить буфер клавиатуры int ch=getch(); //Жд)м нажатия клавиши gotoxy(m[sel].x,m[sel].y); //Сбросили цвет активного пункта textcolor(inactivecolor); cprintf ("%s",m[sel].str); if (!ch) < //Это расширенный код? ch=getch(); //Прочитать его switch(ch) < //Обработка расширенных кодов клавиш case 72: case 75: if (sel) sel--; else sel=n-1; break; //Стрелки вверх и влево case 80: case 77: if (sel> else < //Обработка не-расширенных кодов клавиш switch(ch) < case 13: //Нажата Enter textbackground(w.back); //Поставить фон и цвет окна функций textcolor(w.color); window (w.x1,w.y1,w.x2,w.y2); //Выводить будем в окно функций m[sel].f(); //Вызов функции, закрепленной за пунктом меню clrscr(); //Убрать, если не очищаем окно после выхода из функции textbackground(back); //Восстановить фон и окно во весь экран window (1,1,80,25); break; case 27: Exit(); //По Esc всегда выход из приложения >> > > //Ниже начинается часть пользователя void File() < //Функция по меню File - пока ничего не делает long int i=0; //Печатать из функций лучше через cprintf while (!kbhit()) < delay (200); cprintf ("Работа функции File, шаг %ld\r\n",++i); >> void Do() < //Функция по меню Do - пока ничего не делает cprintf ("Введите целое число: "); int d; cscanf ("%d",&d); //Вводить из функций лучше через cscanf cprintf ("\r\nВы ввели значение %d\r\nНажмите клавишу для выхода. ",d); getch(); getch(); >void main () < setlocale (LC_ALL,"Russian"); setlocale(LC_CTYPE, ".65001"); SetConsoleCP(65001); SetConsoleOutputCP(65001); //Пример для горизонтального меню ITEM menu1[3]=< //Описали меню , , >; WINDOW w=; //Описали окно вывода функций clrscr(); DrawMenu (3,menu1,w); //Вызвали главную функцию системы /* //Пример для вертикального меню ITEM menu1[3]=< //Описали меню , , >; WINDOW w=; //Описали окно вывода функций textbackground (WHITE); clrscr(); DrawMenu (3,menu1,w); //Вызвали главную функцию системы */ >

Оба файла в той версии, что использовал, архив .zip:

  • на всякий случай переименовал coniow.c в coniow.cpp ;
  • поставил первой строкой coniow.cpp директиву

#define _NO_CRT_SECURE_WARNINGS
buffer = malloc ( .
buffer = (CHAR_INFO*)malloc (

P.P.S. Прикреплённый ниже архив с coniow.c и coniow.h также работает в Visual Studio 2015, например, следующий исходник ( main.cpp из архива):

#define _CRT_SECURE_NO_WARNING #include #include «coniow.h» using namespace std; int main()

12.04.2015, 16:24 [12754 просмотра]

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

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

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Linux: снова вопрос про аналог conio.h (неблокирующий ввод с клавиатуры под linux)

Господа, мой вопрос настолько классический, что прямо смешно. Он называется «неблокирующий ввод с клавиатуры под linux». Я хочу иметь возможность в программе на C спросить «верни мне, пожалуйста, код нажатой клавиши, а если ничего не нажато — верни -1». Под виндой именно такую функциональность даёт include . int kb=getch(); . Конечно, я прочитал вот этот и вот этот топики и поэкспериментировал с теми способами, котрые там советуют. У них есть один недостаток: они «ломают вывод на экран» при помощи простого printf(). То есть, по меткому выражению одного из комментаторов, используя ncurses вы получаете «всё или ничего». То есть, если Вы подключили ncurses — нужно забыть про printf и использовать специфичные для ncurses способы вывода на экран. С советом, в котором приводится код для getch()

 int getch() < int r; unsigned char c; if ((r = read(0, &c, sizeof(c))) < 0) < return r; >else < return c; >> 

(это кусочек из полного кода, который доступен по первой ссылке) всё немного лучше, но всё равно, при попытке в цикле вводить симолы и печатаь их коды на экране возникает вот такая картина: код main’а: (выше мейна написан целиком тот код, который советуют в самом популярном ответе по первой ссылке)

 int main(int argc, char *argv[]) < printf("Hello again!\n"); set_conio_terminal_mode(); while (!kbhit()) < /* do some work */ >for(int i=0; i printf ("Bye!\n"); > 

как съезжает каретка при каждой печати

картинка на экране: Ну, то есть, при выполнении каждого printf положение «виртуальной каретки» смещается. Нельзя ли с этим как то побороться? может, есть способ, как вводить символы с клавиатуры и при этом нормально пользоваться printf?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *