PDA

View Full Version : سوال: مشکل در استفاده از کتابخانه conio.h



mornwk
یک شنبه 10 فروردین 1393, 23:55 عصر
سلام . من تو اکلیپس c++ مینویسم و از کامپایلر Linux gcc استفاده می کنم. وقتی میخوام از کتابخانه .conioh استفاده کنم ارور میده. متن ارور هم اینه: no such file or directory
البته کلا .h رو قبول نمیکنه مثلا وقتی مینویسم iostream.h هم نمیتونه اجرا کنه و من همیشه iostream رو بدون .h مینویسم. اما برای conio نمیدونم باید چی کار کنم. ممنون میشم دوستان راهنمایی کنن.

rahnema1
دوشنبه 11 فروردین 1393, 07:08 صبح
conio.h جزء کتابخانه استاندارد نیست و ثانیا برای لینوکس نیست . به جای اون اگه در سیستم شما اگه Ncurses نصب باشه می تونید از این استفاده کنید که یه چیزی شبیه conio.h را پیاده سازی کرده
http://sourceforge.net/projects/linux-conioh/

one hacker alone
دوشنبه 11 فروردین 1393, 11:17 صبح
از کدوم تابع این کتابخونه میخواید استفاده کنید؟ شاید جایگزین اون تابع در لینوکس باشه

mornwk
دوشنبه 11 فروردین 1393, 12:05 عصر
از کدوم تابع این کتابخونه میخواید استفاده کنید؟ شاید جایگزین اون تابع در لینوکس باشه

از getch() میخوام استفاده کنم.

Mojtaba.Shateri
دوشنبه 11 فروردین 1393, 12:39 عصر
از getch() میخوام استفاده کنم.

شما میتونی این کد رو در یه فایل هدر دلخواه قرار بدی و هرجای از برنامه دوس داری استفاده کنی :
در عمل یعنی شما پیاده سازیو خودت انجام میدی چون gcc کتابخونه conio ساپورت نمیکنه.
#include <termios.h>
#include <unistd.h>
#include <stdio.h>

void getch(void)
{
struct termios oldattr, newattr;
int ch;
tcgetattr( STDIN_FILENO, &oldattr );
newattr = oldattr;
newattr.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newattr );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldattr );
}
اینم یه نمونه دیگه از برنامه کاملش به شکلی دیگه برا gcc:
#include <termios.h>
#include <stdio.h>

static struct termios old, new;

void initTermios(int echo)
{
tcgetattr(0, &old); /* grab old terminal i/o settings */
new = old; /* make new settings same as old settings */
new.c_lflag &= ~ICANON; /* disable buffered i/o */
new.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */
}

void resetTermios(void)
{
tcsetattr(0, TCSANOW, &old);
}

char getch(void)
{
char ch;
initTermios(echo);
ch = getchar();
resetTermios();
return ch;
}

int main(void) {
char c;
printf("please type : ");
c = getch();
printf("\nYou typed: %c\n", c);
return 0;
}


امیدوارم مشکلت حل بشه.

mornwk
دوشنبه 11 فروردین 1393, 13:08 عصر
شما میتونی این کد رو در یه فایل هدر دلخواه قرار بدی و هرجای از برنامه دوس داری استفاده کنی :
در عمل یعنی شما پیاده سازیو خودت انجام میدی چون gcc کتابخونه conio ساپورت نمیکنه.
[CPP]#include <termios.h>
.
.
امیدوارم مشکلت حل بشه.



ممنون. الان من فایل هدر رو ساختم ولی getch() رو فراخوانی می کنم ارور میده. چطوری باید تو برنامه ازش استفاده کنم؟

mornwk
دوشنبه 11 فروردین 1393, 13:10 عصر
conio.h جزء کتابخانه استاندارد نیست و ثانیا برای لینوکس نیست . به جای اون اگه در سیستم شما اگه Ncurses نصب باشه می تونید از این استفاده کنید که یه چیزی شبیه conio.h را پیاده سازی کرده
http://sourceforge.net/projects/linux-conioh/

الان مشابه getch() رو چطوری باید تو
ncurses ازش استفاده کنم؟

Mojtaba.Shateri
دوشنبه 11 فروردین 1393, 13:14 عصر
ممنون. الان من فایل هدر رو ساختم ولی getch() رو فراخوانی می کنم ارور میده. چطوری باید تو برنامه ازش استفاده کنم؟

متن error چیه؟

one hacker alone
دوشنبه 11 فروردین 1393, 13:57 عصر
از getchar() استفاده کنید

rahnema1
دوشنبه 11 فروردین 1393, 17:30 عصر
الان مشابه getch() رو چطوری باید تو
ncurses ازش استفاده کنم؟

اون لینک که گذاشتم اصلا رفتی؟ فایل conio.h را دانلود کنید.
دوباره میگم این لینک را ببینید:
http://sourceforge.net/projects/linux-conioh/

mornwk
دوشنبه 11 فروردین 1393, 18:58 عصر
متن error چیه؟

2 تا ارور میگیره:
1.function getch coud not be resolved.
2. make : *** src/mohammad.o

mornwk
دوشنبه 11 فروردین 1393, 19:08 عصر
اون لینک که گذاشتم اصلا رفتی؟ فایل conio.h را دانلود کنید.
دوباره میگم این لینک را ببینید:
http://sourceforge.net/projects/linux-conioh/

این برنامش اجرا نمیشه از } ایراد میگیره که متوجه نشدم چی میگه دقیقا

Mojtaba.Shateri
دوشنبه 11 فروردین 1393, 21:42 عصر
2 تا ارور میگیره:
1.function getch coud not be resolved.
2. make : *** src/mohammad.o

به کتابخونه ها گیر میده.
بجای stdio.h بنویس stdlib.h . تست کن ببین هدرهای همون درستن؟! برا تست کردن میتونی این کد رو به غیر از هدر کامنت کنی.
از چه کامپایلر و چه نسخه ای استفاده میکنی.؟ چون تو مسیر Project > Properties > Settings > Binary Parsers > "GNU Elf Parser هم میتونی Elf Parser رو تیک بزنی. اگه تو نرم افزارت باشه!:چشمک:

mornwk
دوشنبه 11 فروردین 1393, 23:24 عصر
به کتابخونه ها گیر میده.
بجای stdio.h بنویس stdlib.h . تست کن ببین هدرهای همون درستن؟! برا تست کردن میتونی این کد رو به غیر از هدر کامنت کنی.
از چه کامپایلر و چه نسخه ای استفاده میکنی.؟ چون تو مسیر Project > Properties > Settings > Binary Parsers > "GNU Elf Parser هم میتونی Elf Parser رو تیک بزنی. اگه تو نرم افزارت باشه!:چشمک:

ممنون از کمکتون.
الان ۲ تا ارور شد یکی و ارورش عوش شد: ‘getch’ was not declared in this scope

من از Linux gcc استفاده میکنم و از اکلیپس.

rahnema1
دوشنبه 11 فروردین 1393, 23:30 عصر
این فایل conio.h واسه سی پلا پلاسه فکر کنم این چند تا خط را از توی اون بردارید درست بشه

class Startuj // konstruktor i destruktor klasy beda odpowiedzalni
{ public: // za automagiczna inicjalizacje ustawien ;-)
Startuj(){ inicjuj(); }
~Startuj(){ endwin(); }
} Start; // inicjuj!