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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: بهزاد در 24 آذر 1389، 10:50 ب‌ظ

عنوان: افزودن getch به لینوکس جواب نمی دهد ! ( حل شد )
ارسال شده توسط: بهزاد در 24 آذر 1389، 10:50 ب‌ظ
سلام
#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  که برای لینوکس نوشته شده هم ارورر داره .

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

لطفا به من هم معرفی کنه ...  :(
عنوان: پاسخ به: افزودن getch به لینوکس جواب نمی دهد !
ارسال شده توسط: HojjatJafary در 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://pubs.opengroup.org/onlinepubs/007908799/xcurses/curses.h.html)
http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Curses.pdf
البته سایر اطلاعات و راه و رسم استفاده صحیح از این کتابخانه با شما.

موفق باشید.

عنوان: پاسخ به: افزودن getch به لینوکس جواب نمی دهد !
ارسال شده توسط: ibtkm در 25 آذر 1389، 09:31 ب‌ظ
دوستان تو لینوکس هیچ نیازی به getch نیست . چون از تو bash می تونی نتایج کارتون رو ببینید
عنوان: پاسخ به: افزودن getch به لینوکس جواب نمی دهد !
ارسال شده توسط: بهزاد در 26 آذر 1389، 12:14 ب‌ظ
سلااام
بسیار ممنونم . باید برم تست کنم .

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

بر می گردم خبرش و میدم .
عنوان: پاسخ به: افزودن getch به لینوکس جواب نمی دهد ! ( حل شد )
ارسال شده توسط: بهزاد در 06 بهمن 1389، 11:44 ب‌ظ
سلام
پاسخ این بحث رو می بایست زودتر ارسال می کردم . امتحانات ترم شروع شد و من تا الان موفق به تست این کتابخانه نشده بودم .

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

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

از شما هم که راهنمایی کردین تشکر می کنم .