Во-первых, conio.h — это не часть стандарта. Раньше Borland и MS его поддерживали, но сейчас это отключено. Поэтому все старые примеры, в которых есть этот заголовок, надо поправить.
Предлагаю следующее: уберите строчки #include <conio.h>
и _getch();
из программы. И замените cprintf
на printf
. Также нет простого способа установить цвет, поэтому уберём пока textbackground
и textcolor
. После этого она должна заработать. Если этого хватает, то хорошо.
Если же надо, чтобы консоль не закрывалась сразу, то надо чуть-чуть дополнить программу. Это можно сделать, например, добавив вызов следующей функции:
#include <iostream>
#include <limits>
void PressEnterToContinue()
{
std::cout << "Press ENTER to continue... " << flush;
std::cin.ignore( std::numeric_limits <std::streamsize> ::max(), 'n' );
}
Тогда программа будет выглядеть примерно так:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <limits>
void PressEnterToContinue()
{
std::cout << "Press ENTER to continue... " << flush;
std::cin.ignore( std::numeric_limits <std::streamsize> ::max(), 'n' );
}
int main()
{
float a = 5.5;
float b = 1.5;
float c = 3.3;
printf ("BLA BLA ");
PressEnterToContinue();
}
While running a simple c program I receive an
Unresolved inclusion: <conio.h>
What am I missing? I am using eclipse on fedora 13
. Please help me resolve this problem. If I am missing any file or haven’t installed anything let me know. Also I am new to fedora. Guide me with proper steps please.
Thanks in advance.
codaddict
444k82 gold badges492 silver badges528 bronze badges
asked Sep 17, 2010 at 7:40
1
conio.h is a C header file used in old MS-DOS compilers to create text user interfaces. It is not described in The C Programming Language book, and it is not part of the C standard library, ISO C nor is it required by POSIX.
Since you are on Linux, to resolve it don’t include conio.h
and don’t use any functions from that header.
Source
answered Sep 17, 2010 at 7:44
codaddictcodaddict
444k82 gold badges492 silver badges528 bronze badges
4
MicroL 1 / 1 / 0 Регистрация: 19.02.2012 Сообщений: 17 |
||||
1 |
||||
29.02.2012, 19:18. Показов 19427. Ответов 15 Метки нет (Все метки)
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
29.02.2012, 19:18 |
15 |
Диссидент 27530 / 17218 / 3788 Регистрация: 24.12.2010 Сообщений: 38,765 |
|
29.02.2012, 19:19 |
2 |
Просто выкинь эту строчку!
1 |
1 / 1 / 0 Регистрация: 19.02.2012 Сообщений: 17 |
|
29.02.2012, 19:22 [ТС] |
3 |
если выкинуть не работает оператор getch()
0 |
5230 / 3202 / 362 Регистрация: 12.12.2009 Сообщений: 8,112 Записей в блоге: 2 |
|
29.02.2012, 19:25 |
4 |
MicroL, какие ось и компилятор?
1 |
Диссидент 27530 / 17218 / 3788 Регистрация: 24.12.2010 Сообщений: 38,765 |
|
29.02.2012, 19:27 |
5 |
если выкинуть не работает оператор getch() Вместо getch используй getchar
1 |
3646 / 1378 / 243 Регистрация: 16.04.2009 Сообщений: 4,526 |
|
29.02.2012, 19:28 |
6 |
conio.h не работает в программе что делать? Это нестандартный хедер, неудивительно, что его нет. Лучше бы сказали ОС и компилятор какой?
1 |
Диссидент 27530 / 17218 / 3788 Регистрация: 24.12.2010 Сообщений: 38,765 |
|
29.02.2012, 19:32 |
7 |
Не по теме: Это один из тех, увы! нередких случаев, когда моя подпись — к месту
1 |
1 / 1 / 0 Регистрация: 19.02.2012 Сообщений: 17 |
|
29.02.2012, 19:41 [ТС] |
8 |
Ubuntu 11, GNU C++ Compiler
0 |
5230 / 3202 / 362 Регистрация: 12.12.2009 Сообщений: 8,112 Записей в блоге: 2 |
|
29.02.2012, 19:55 |
9 |
Ubuntu 11, GNU C++ Compiler Ну так там нет conio.h, поэтому и ругается.
1 |
3646 / 1378 / 243 Регистрация: 16.04.2009 Сообщений: 4,526 |
|
29.02.2012, 20:55 |
10 |
MicroL, если необходим этот файл, то придется перейти на Виндовс, например.
1 |
Диссидент 27530 / 17218 / 3788 Регистрация: 24.12.2010 Сообщений: 38,765 |
|
29.02.2012, 22:56 |
11 |
Вместо getch используй getchar Прочти еще разок. Может поможет?
0 |
102 / 86 / 5 Регистрация: 27.10.2010 Сообщений: 534 Записей в блоге: 2 |
|
29.02.2012, 23:01 |
12 |
вместо getch() cin.get() оно стандартное
0 |
143 / 112 / 36 Регистрация: 14.04.2011 Сообщений: 261 |
|
29.02.2012, 23:03 |
13 |
А лучше всего запускать из терминала
0 |
5827 / 3478 / 358 Регистрация: 08.02.2010 Сообщений: 7,448 |
|
01.03.2012, 07:19 |
14 |
Консольные программы (внезапно) нужно запускать из консоли. Запрос ввода в конце программы не нужен, так как он делает ее непригодной в использовании в скриптах. По той же причине вся информация от пользователя должна передаваться программе не интерактивно, а через аргументы командной строки (исключение — программы, предназначенные для работы в конвейерах)
0 |
5230 / 3202 / 362 Регистрация: 12.12.2009 Сообщений: 8,112 Записей в блоге: 2 |
|
01.03.2012, 08:13 |
15 |
Вместо getch используй getchar В Linux даже можно настроить так, чтобы getchar() работал как getch(), т.е. не ждал нажатия enter. Только вот на память не скажу как это делается, спроси у гугла)
0 |
0 / 0 / 0 Регистрация: 08.11.2020 Сообщений: 92 |
|
05.05.2021, 13:36 |
16 |
А вот не работает ни get() не getchar() и <conio.h> тоже
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
05.05.2021, 13:36 |
16 |
TL;DR
You basically have 2 choices on how to proceed. You can either install a package that includes conio.h
+ its library as I describe below or you can use ncurses.h
+ its library and swap out and/or remove function calls that depend on it as @Ashish Kulkarni describes in his answer. Either option is viable and is up to the developer/implementer to decide which is the «correct» path.
The conio.h
header + library for C/C++ is not something you’ll typically find as being installed by default with most Linux distros. At least not the ones that I’m familiar with Fedora/CentOS/RHEL/Debian/Ubuntu.
NOTE:: Also the use of ncurses.h
is not appropriate here either, since that library will likely not include any of the functions that you’re looking for (clrscr()
, getch()
, etc.) since your .cpp
file would seem to be coming from a Windows environment originally.
However you have the option with Linux to install packages from centrally managed repositories. Looking for a package that includes conio.h
on my Fedora system I turned up this package. I realize you’re on Ubuntu but on Fedora the package is called libconio
that provides exactly the libraries that you’re looking for.
$ yum info libconio.i686
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
Available Packages
Name : libconio
Arch : i686
Version : 1.0.0
Release : 3.2
Size : 6.3 k
Repo : rpm-sphere
Summary : Implementation of conio.h functions
License : GPL
Description : libconio is an implementation of conio.h functions that some
: DOS and Windows compilers provide. It's purpose is to allow
: developers to use functions like getch, getche, textcolor and
: others in a linux environment.
Looking on a Ubuntu system I have there’s a similar package called elks-libc
that also contains conio.h
.
$ apt-cache show elks-libc
Package: elks-libc
Priority: optional
Section: devel
Installed-Size: 651
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Juan Cespedes <cespedes@debian.org>
Architecture: all
Source: linux86
Version: 0.16.17-3.1ubuntu3
Replaces: bcc (<< 0.14.9), linux86
Recommends: bcc (= 0.16.17-3.1ubuntu3)
Conflicts: linux86
Filename: pool/main/l/linux86/elks-libc_0.16.17-3.1ubuntu3_all.deb
Size: 214574
MD5sum: 75d87d8c2c906579ec84624fff93d76d
SHA1: 5cd6d3b9c5a881ad5fcdcffbd5a075761b017731
SHA256: 57bee73becbeae5dc2bc4cd859c13dc065e4a49472d876225e3e37fd6538feb2
Description-en: 16-bit x86 C library and include files
This is the C library used to compile with bcc. It includes all the
headers and static libraries needed to build 16-bit applications,
for Linux/8086, Linux/i386 and DOS .COM executables.
Description-md5: 2da04d6881989db1f4a11df4a992c06f
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m
And here’s the file:
$ apt-file list elks-libc | grep conio.h
elks-libc: /usr/lib/bcc/include/conio.h
So you can simply install this package to get the header file + libraries that your application requires to compile.
$ sudo apt-get install elks-libc
NOTE: You may need to adjust your include path to gcc
to pick this header file up.
elks-libc is only for 8088 Intel processors
As mentioned in the comments, elks-libc
is intended for use on system’s that are targeting the Intel 8088 CPU. You can instead download libconio.h
from the SourceForge project titled: Linux c++ implementation of conio.h. You’ll have to install it manually but it shouldn’t be too difficult to do this.
Simple Linux implementation of Borland’s conio (conio.h) library. It uses Ncurses. It includes most functions required to write a basic application using conioh (i.e. getch(), cprintf(), puts() and more).
You can also get the entire libconio
project’s source from this SourceForge project titled: libconio and unpack it.
Details on doing this as well as building it and compiling it are covered in this tutorial titled: How to use with GCC.
- Печать
Страницы: [1] 2 Все Вниз
Тема: компилятор не находит заголовочный файл conio.h (Прочитано 7972 раз)
0 Пользователей и 1 Гость просматривают эту тему.
tro9an
вот код
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char dir='a';
int x=10,y=10;
cout << "Нажмите Enter для выхода...n";
while (dir!='r')
{
cout << "nВведите ваши координаты: " << x << ", " << y;
cout << "Выбирете направление (n,s,e,w): ";
dir=getche();
if (dir=='n')
y--;
else
if (dir=='s')
y++;
else
if (dir=='e')
x++;
else
if (dir=='w')
x--;
}
return 0;
}
myproga.cpp:3:19: error: conio.h: Нет такого файла или каталога
myproga.cpp: In function ‘int main()’:
myproga.cpp:13: error: ‘getche’ was not declared in this scope
как это исправить?
arrecck
tro9an
ну вместо getche() написал getchar()
myproga.cpp:12: error: ‘getchar’ was not declared in this scope
чё теперь делать?
насчёт сылки на вику, с++ я только начинаю познавать, там слишком сложна описано
Not eXist
Ну не является библиотека conio стандартной библиотекой C++.
VestniK
ну вместо getche() написал getchar()
myproga.cpp:12: error: ‘getchar’ was not declared in this scope
чё теперь делать?
насчёт сылки на вику, с++ я только начинаю познавать, там слишком сложна описано
Можно подробней где там слишком сложно написано?
Тем не менее, он не является частью языка программирования Си, стандартной библиотеки языка Си, ISO C или требуемой стандартом POSIX.
…
Большинство компиляторов языка Си, предназначенных для UNIX и Linux, не имеют этого файла и не обеспечивают сопутствующих библиотечных функций.
Что именно тут непонятно?
tro9an
ну точто он не является я уже понял, так какой функцией заменить функцию getche() и вообше чё с ней делать если нужна именно она?
вот строка
Члены-функции
после этой строки идёт столбец вот там ппц…
VestniK
Искать в гугле по ключивым словам C getchar Linux. Есть примеры как реализовать эту функцию через ncurses или через UNIX’овые функции работы с терминалом. Помоему даже на жтом форуме были листинги готовых решений. Поиск рулит.
Not eXist
ЕМНИП, getch есть в библиотеке ncurses.
VestniK
вот строка
Члены-функции
после этой строки идёт столбец вот там ппц…
После этой строчки идёт не пипец, а перечисление функций библиотеки conio. Готовся к тому, что это будет в программировании часто встречаться
arrecck
ТС, читать умеешь?
Начал изучать программирование, привыкай, что гуглить придется много и часто
Книжку по с++ для linux скачай, там будет все компилироваться
Yurror
ierofant
Что вы всех людей в гугл отсылаете? По вашему этот сайт был создал как посредник для Google ?
А по вопросу: conio.h это древний заголовочник, был в MS-DOS’е, он не является частью C. Для линукса надо искать иную альтернативу.
Почему бы std::cin не использовать для этих целей?
« Последнее редактирование: 26 Октября 2010, 11:17:07 от ierofant »
VestniK
Что вы всех людей в гугл отсылаете? По вашему этот сайт был создал как посредник для Google?
Потому что надоедает видеть как раз в месяц кто-то, не удосужившись даже потратить 5 минут на поиск, задаёт вопрос который уже обсуждался миллион раз и как мининум 2-3 разных ответа на него можно найти даже на этом форуме не говоря уж о гугле.
Опять же, если человек не научится самостоятельно искать ответы на свои вопросы, то в программировании ему делать нечего. Так что если он самостоятельно найдёт ответ на этот вопрос, то пользы от этого, для него же самого, будет несоизмеримо больше нежели если он тупо получит разжёваный ответ с листингами и примерами здесь.
ierofant
Что вы всех людей в гугл отсылаете? По вашему этот сайт был создал как посредник для Google?
Потому что надоедает видеть как раз в месяц кто-то, не удосужившись даже потратить 5 минут на поиск, задаёт вопрос который уже обсуждался миллион раз и как мининум 2-3 разных ответа на него можно найти даже на этом форуме не говоря уж о гугле.
Опять же, если человек не научится самостоятельно искать ответы на свои вопросы, то в программировании ему делать нечего. Так что если он самостоятельно найдёт ответ на этот вопрос, то пользы от этого, для него же самого, будет несоизмеримо больше нежели если он тупо получит разжёваный ответ с листингами и примерами здесь.
Давайте создадим мегапост «Ищите в гугл» навроде поста «Makefile: как скомпилировать свой первый Hello World». Ибо честное слово, все эти отсылки туда раздражают не меньше чем сами вопросы.
VestniK
Процетирую самого себя:
Опять же, если человек не научится самостоятельно искать ответы на свои вопросы, то в программировании ему делать нечего. Так что если он самостоятельно найдёт ответ на этот вопрос, то пользы от этого, для него же самого, будет несоизмеримо больше нежели если он тупо получит разжёваный ответ с листингами и примерами здесь.
так что отсылки в гугл меня ни капли не раздражают. Я сам не задаю вопрос пока хотя бы часик не поисследовав вопрос самостоятельно. Поэтому вопросов, как правило, не задаю ибо на все мыслемые вопросы ответы уже там есть.
Давайте создадим мегапост «Ищите в гугл» навроде поста «Makefile: как скомпилировать свой первый Hello World».
уже есть: http://maddog.sitengine.ru/smart-question-ru.html
« Последнее редактирование: 26 Октября 2010, 15:41:04 от VestniK »
- Печать
Страницы: [1] 2 Все Вверх