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

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

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




نویسنده موضوع: خطا هنگام استفاده از getche در لینوکس کالی  (دفعات بازدید: 1027 بار)

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

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2595
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN

سلام. چرا وقتی از getche و getch  استفاده می‌کنم خطای عجيبی  میده ولی در ویندوز با همین کد خطایی نمیده؟
زبان سی
لینوکس کالی
جی سی سی
main()
{
char a;
a=getche();
}
[/size]
« آخرین ویرایش: 03 خرداد 1401، 05:13 ب‌ظ توسط aminmodaresi10 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین ɴɪᴍᴀ

  • High Hero Member
  • *
  • ارسال: 1275
  • جنسیت : پسر
  • یه برنامه نویس 13 ساله :)
    • smartnima Website
پاسخ : خطا هنگام استفاده از getche و getch
« پاسخ #1 : 03 خرداد 1401، 02:35 ب‌ظ »
خب خطارو بفرستید تا بدونیم چی شده

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2595
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : خطا هنگام استفاده از getche و getch
« پاسخ #2 : 03 خرداد 1401، 02:43 ب‌ظ »
خب خطارو بفرستید تا بدونیم چی شده
    1 | main()
      | ^~~~
main.c: In function ‘main’:
main.c:4:7: warning: implicit declaration of function ‘getche’ [-Wimplicit-function-declaration]
    4 |     a=getche();
      |       ^~~~~~
/usr/bin/ld: /tmp/ccJGeMlF.o: in function `main':
main.c:(.text+0x12): undefined reference to `getche'
collect2: error: ld returned 1 exit status
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19701
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : خطا هنگام استفاده از getche و getch
« پاسخ #3 : 03 خرداد 1401، 02:45 ب‌ظ »
لطفاً موضوع رو ویرایش کنید و با قلم درستی بنویسید که بشه خوند. هم‌چنین بگید که دارید به چه زبانی کد می‌نویسید و محیطتون چیه. متن کد و متن خطا هم فراموش نشه.
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2595
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : خطا هنگام استفاده از getche و getch
« پاسخ #4 : 03 خرداد 1401، 05:06 ب‌ظ »
لطفاً موضوع رو ویرایش کنید و با قلم درستی بنویسید که بشه خوند. هم‌چنین بگید که دارید به چه زبانی کد می‌نویسید و محیطتون چیه. متن کد و متن خطا هم فراموش نشه.
کد و متن خطا را قرار دادم و زبان هم زبان سی است و بستر هم لینوکس کالی با gcc 10
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #5 : 03 خرداد 1401، 06:06 ب‌ظ »
پس include اش کجاست؟
اینو به اول کد برنامه اضافه کنید.
#include <stdio.h>چرا نوع تابع main مشخص نشده؟ main معمولا از جنس int هست.
فکر کنم زیادی به IDE عادت کردید چون معمولا IDE خودش اول کار stdio.h رو include می‌کنه، تابع main رو از جنس int تعریف می‌کنه، یه return 0 هم آخر تابع main قرار میده.
میدونید که زکات علم نشر آن است

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2595
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #6 : 03 خرداد 1401، 06:24 ب‌ظ »
پس include اش کجاست؟
اینو به اول کد برنامه اضافه کنید.
#include <stdio.h>چرا نوع تابع main مشخص نشده؟ main معمولا از جنس int هست.
فکر کنم زیادی به IDE عادت کردید چون معمولا IDE خودش اول کار stdio.h رو include می‌کنه، تابع main رو از جنس int تعریف می‌کنه، یه return 0 هم آخر تابع main قرار میده.
اینا اصلا مهم نیست و مربوط میشه به نوع استاندارد برنامه نویسی. من تا حالا چند تا برنامه را اینجوری کامپایل و اجرا هم کردم ولی نمی‌دونم چرا تابع getche و getch در لینوکس خطا ایجاد میکنه ولی در ویندوز با همین کد و کامپایلر  خطایی نمیده؟
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19701
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #7 : 04 خرداد 1401، 01:57 ق‌ظ »
خب اگه چنین برنامه‌ای اجرا شده، مشکل از کامپایلر بوده.
برای استفاده از خانوادهٔ getch در gcc باید از کتابخونهٔ ncurses استفاده کنی:
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/scanw.html
« آخرین ویرایش: 04 خرداد 1401، 01:58 ق‌ظ توسط دانیال بهزادی »
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آنلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1258
  • جنسیت : پسر
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #8 : 04 خرداد 1401، 02:55 ق‌ظ »
ابتدا برنامه را اصلاح کنید و تورفتگی‌ها را رعایت کنید.

main()
{
    char a;
    a=getche();
}

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

$ gcc -Wall code.c -o code
اجرا با
./code

به هشدارهای کامپایلر توجه کنید.

اگر می‌خواهید فقط یک کاراکتر از ورودی بخوانید برنامه را به این شکل اصلاح کنید.

#include <stdio.h>

int main()
{
    char a=0;
    a=getchar();
    printf("you enter: %c", a);
    return 0;
}

تابع getch در هیچ استانداردی از زبان C وجود نداره نباید از اون استفاده کنید.
تابع استاندارد getchar است.

برای اطلاعات بیشتر صفحهٔ man را ببینید.

man getchar
NAME
       fgetc, fgets, getc, getchar, ungetc - input of characters and strings

SYNOPSIS
       #include <stdio.h>

       int fgetc(FILE *stream);

       char *fgets(char *s, int size, FILE *stream);

       int getc(FILE *stream);

       int getchar(void);

       int ungetc(int c, FILE *stream);

DESCRIPTION
       fgetc() reads the next character from stream and returns it as an unsigned char cast to an int, or EOF
       on end of file or error.

       getc() is equivalent to fgetc() except that it may be implemented as a macro  which  evaluates  stream
       more than once.

       getchar() is equivalent to getc(stdin).

اگر کتب یا منابع شما به شکل نخستین برنامه است توصیه می‌کنم در اون‌ها تجدید نظر کنید.

اینجا دو منبع معرفی شده است.
کتاب زیر هم می‌تونم به اون دو تا اضافه کنم.
Modern C for Absolute Beginners
A Friendly Introduction to the C Programming Language
Slobodan Dmitrović
Apress

« آخرین ویرایش: 04 خرداد 1401، 02:59 ق‌ظ توسط esmaeelE »

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #9 : 05 خرداد 1401، 07:25 ب‌ظ »
اینا اصلا مهم نیست و مربوط میشه به نوع استاندارد برنامه نویسی. من تا حالا چند تا برنامه را اینجوری کامپایل و اجرا هم کردم ولی نمی‌دونم چرا تابع getche و getch در لینوکس خطا ایجاد میکنه ولی در ویندوز با همین کد و کامپایلر  خطایی نمیده؟
اینا خیلی مهمه. من هیچ جایی ندیدم اینجوری کد c بنویسند و کامپایل بشه، چجوری میگید به استاندارد برنامه‌نویسی ربط داره؟
میدونید که زکات علم نشر آن است

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2595
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #10 : 05 خرداد 1401، 08:02 ب‌ظ »
اینا اصلا مهم نیست و مربوط میشه به نوع استاندارد برنامه نویسی. من تا حالا چند تا برنامه را اینجوری کامپایل و اجرا هم کردم ولی نمی‌دونم چرا تابع getche و getch در لینوکس خطا ایجاد میکنه ولی در ویندوز با همین کد و کامپایلر  خطایی نمیده؟
اینا خیلی مهمه. من هیچ جایی ندیدم اینجوری کد c بنویسند و کامپایل بشه، چجوری میگید به استاندارد برنامه‌نویسی ربط داره؟
منظور من این بود که این ها بله که مهمه ، صد درصد هم مهمه ولی برای برنامه های بسیار ساده زمیمه کردن فایل های هیدر مهم نیست و البته این چیزایی که حتما باید تابع تعيين نوع بشه و مثلا تهش یک مقداری را برگرداند مربوط به استاندارد ها است. تازه من تازه شروع کردم و تو همه چیز نوبم  ((:
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4865
  • جنسیت : پسر
  • masoft قدیم
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #11 : 05 خرداد 1401، 08:29 ب‌ظ »
برای برنامه های بسیار ساده زمیمه کردن فایل های هیدر مهم نیست
به نظر میاد هنوز با پایه‌های زبان سی آشنا نیستید. پیشنهاد می‌کنم برنامه‌نویسی سی رو با یک کتاب دیگه شروع کنید. همچنین از یک توزیع معقول مثل اوبونتو یا دبیان برای کار استفاده کنید.

آفلاین #unknown#

  • Sr. Member
  • *
  • ارسال: 441
  • جنسیت : پسر
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #12 : 05 خرداد 1401، 09:07 ب‌ظ »
این فاصله ها به نظر معنی دار نیستن ، چون هردو رو امتحان کردم یک خروجی رو داد.
#include <stdio.h>
int main()
{
char a=0;
a=getchar();
printf("you enter: %c", a);
return 0;
}

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2595
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #13 : 05 خرداد 1401، 09:12 ب‌ظ »
برای برنامه های بسیار ساده زمیمه کردن فایل های هیدر مهم نیست
به نظر میاد هنوز با پایه‌های زبان سی آشنا نیستید. پیشنهاد می‌کنم برنامه‌نویسی سی رو با یک کتاب دیگه شروع کنید. همچنین از یک توزیع معقول مثل اوبونتو یا دبیان برای کار استفاده کنید.
ممنون از توصیه تون. در ادامه کتابی که دارم می‌‌خونم به این ها هم می‌رسم. کالی را انتخاب  کردم چون هم سبک تره هم ابزار های خوبی را داره
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین ɴɪᴍᴀ

  • High Hero Member
  • *
  • ارسال: 1275
  • جنسیت : پسر
  • یه برنامه نویس 13 ساله :)
    • smartnima Website
پاسخ : خطا هنگام استفاده از getche در لینوکس کالی
« پاسخ #14 : 05 خرداد 1401، 10:08 ب‌ظ »
اصلا انتخاب درستی نیست! تو کالی ابزار های خیلی اضافه ای هست  و نصبش در بیرون از ماشین مجازی کار درستی نیست مگر در شرایط خاص، پیشنهاد من اوبونتو هست.