انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: افزودن getch به لینوکس جواب نمی دهد ! ( حل شد )  (دفعات بازدید: 2202 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین بهزاد

  • Newbie
  • *
  • ارسال: 22
  • جنسیت : پسر
سلام
#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int mygetch( ) {
  struct termios oldt,
                 newt;
  int            ch;
  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;
}

این تابعی که دوستان به عنوان معادل getch()  در لینوکس معرفی کرده اند , درست نیست چون باید Enter بزنی !

تابع getch ورودی می گیره بدون زدن enter .

من چند روزه دنبال مشابه این برای لینوکس هستم اما پیدا نکردم .

و اون conio.h  که برای لینوکس نوشته شده هم ارورر داره .

آیا کسی تابعی مشابه پیدا کرده و باهاش کار کرده باشه ؟

لطفا به من هم معرفی کنه ...  :(
« آخرین ویرایش: 06 بهمن 1389، 11:48 ب‌ظ توسط بهزاد »
هرکس چرایی برای زیستن داشته باشد ؛ از پس هر چگونه ای بر می آید .

آفلاین HojjatJafary

  • Full Member
  • *
  • ارسال: 107
پاسخ به: افزودن getch به لینوکس جواب نمی دهد !
« پاسخ #1 : 25 آذر 1389، 01:15 ق‌ظ »
سلام
در لینوکس شما هیچ محدودیتی ندارید(البته به غیر از بعضی موارد:D) .


یک کتابخانه خوب برای کار کردن با کنسول وجود دارد که امکانات بسیار بیشتری نسبت به conio به شما می دهد با نام libncurses.

ابتدا باید کتابخانه های libncurses5 و libncurses5-dev را نصب کنید.( یک جستجوی کوچک در سیناپتیک می تواند شما را به این کتابخانه ها برساند)

سپس به صورت زیر عمل کنید:
#include <curses.h>

int main ()
{
initscr();

printw("%s", "Testing getch()!\n");
getch();

endwin();

printf("%s", "Ok!");

return 0;
}

فقط در زمان کامپایل باید به صورت زیر عمل کنید:
$ gcc -o testncurses.o -lncurses testncurses.c

این هم تمام توابع موجود در این فایل :
http://pubs.opengroup.org/onlinepubs/007908799/xcurses/curses.h.html
http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Curses.pdf
البته سایر اطلاعات و راه و رسم استفاده صحیح از این کتابخانه با شما.

موفق باشید.

« آخرین ویرایش: 25 آذر 1389، 01:25 ق‌ظ توسط HojjatJafary »

آفلاین ibtkm

  • Jr. Member
  • *
  • ارسال: 79
    • وبلاگ من درباره ی امنیت , لینوکس و برنامه نویسی
پاسخ به: افزودن getch به لینوکس جواب نمی دهد !
« پاسخ #2 : 25 آذر 1389، 09:31 ب‌ظ »
دوستان تو لینوکس هیچ نیازی به getch نیست . چون از تو bash می تونی نتایج کارتون رو ببینید
تفکر آزاد به همراه تصمیم گیری آزاد در دنیای آزاد. این است دنیای لینوکس.

آفلاین بهزاد

  • Newbie
  • *
  • ارسال: 22
  • جنسیت : پسر
پاسخ به: افزودن getch به لینوکس جواب نمی دهد !
« پاسخ #3 : 26 آذر 1389، 12:14 ب‌ظ »
سلااام
بسیار ممنونم . باید برم تست کنم .

من تو eclipse  برنامه می نویسم . باید تنظیمی وجود داشته باشه برای تغییر دستور کامپایل کردن ...  ( یعنی با خط فرمان کامپایل نکنم )

بر می گردم خبرش و میدم .
هرکس چرایی برای زیستن داشته باشد ؛ از پس هر چگونه ای بر می آید .

آفلاین بهزاد

  • Newbie
  • *
  • ارسال: 22
  • جنسیت : پسر
سلام
پاسخ این بحث رو می بایست زودتر ارسال می کردم . امتحانات ترم شروع شد و من تا الان موفق به تست این کتابخانه نشده بودم .

این کتابخانه و برنامه شما جواب داد . تست گرفتم  .

یه حل شد هم اضافه می کنم برای کسانی که دنبال این کتابخانه هستند .

از شما هم که راهنمایی کردین تشکر می کنم .
هرکس چرایی برای زیستن داشته باشد ؛ از پس هر چگونه ای بر می آید .