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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: learner:~$ در 22 امرداد 1402، 10:15 ب‌ظ

عنوان: نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 22 امرداد 1402، 10:15 ب‌ظ
درود


داشتم برا خودم کد میزدم ( اوبنتو ۲۲.۰۴ ) و خواستم از کتابخانه  conio.h  استفاده کنم که بتونم از دستور های  clrscr() , getch , , ...

استفاده کنم


اما وقتی خواست برنامه رو کامپایل کنم  ( gcc )  ارور میداد!!



متن برنامه من :

#include <stdio.h>
#include <conio.h>
int main()
{
         
        int x, y, z,q;
        clrscr();

        printf("\n ------------------");
        scanf("%d%d", &x, &y);
        z = x * y;
        q = (x + y) * 2;
        printf("\n z = %d ,q = %d", z, q);
        getch();
       
        return 0;
}




کلا میخواستم محیط و مساحت یک مستطیل رو حساب کنم.


اروری که به من داده میشه :



n.c:2:10: fatal error: conio.h: No such file or directory
    2 | #include <conio.h>
      |          ^~~~~~~~~
compilation terminated.





من چیکار کنم؟ چرا ارور میده درصورتی که وقتی سرچ هم میکنم همچین برنامه ایی تو سطح اینترنت هست.
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: Dragon- در 22 امرداد 1402، 10:26 ب‌ظ
conio.h فقط توی ویندوز هست. اون هم بیشتر برای ویندوز‌های قدیمی.
می‌تونید به جاش از ncurses استفاده کنید. اول بسته libncurses-dev رو نصب کنید.
بعد به جای conio.h از curse.h استفاده کنید.
اکثر توابعی که توی conio.h هست، همراه ncurses هم پیدا میشه.

معمولا توی دبیان بسته‌هایی که اسم اونها به dev- ختم میشه، شامل فایل‌های header و اینجور چیز‌ها هستند که برای توسعه نرم‌افزار استفاده میشه.
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: aFard در 22 امرداد 1402، 10:47 ب‌ظ
conio.h فقط توی ویندوز هست. اون هم بیشتر برای ویندوز‌های قدیمی.
می‌تونید به جاش از ncurses استفاده کنید. اول بسته libncurses-dev رو نصب کنید.
بعد به جای conio.h از curse.h استفاده کنید.
اکثر توابعی که توی conio.h هست، همراه ncurses هم پیدا میشه.

معمولا توی دبیان بسته‌هایی که اسم اونها به dev- ختم میشه، شامل فایل‌های header و اینجور چیز‌ها هستند که برای توسعه نرم‌افزار استفاده میشه.
برای c++ هم اینجوریه؟ یادمه توی گنو مشکلی نداشت!
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 22 امرداد 1402، 11:25 ب‌ظ
درود خیلی ممنون

معادل اینها در curser.h  چی هست ؟؟

()gotoxy
()getch
()clrscr
()getche
()getchar
لازم نیست فایل نصبی رو در جایی قرار بدم؟ یا لینک کنم؟
()putch
()putchar
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: esmaeelE در 23 امرداد 1402، 04:56 ق‌ظ
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: دانیال بهزادی در 23 امرداد 1402، 09:43 ق‌ظ
کتابخونه‌ای به اسم conio.h وجود نداره. تو کدوم استاندارد چنین چیزی دیدی؟
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: aFard در 23 امرداد 1402، 11:32 ق‌ظ
کتابخونه‌ای به اسم conio.h وجود نداره. تو کدوم استاندارد چنین چیزی دیدی؟
یعنی حتی توی c++ هم استاندارد نیست؟ ؟؟؟
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: دانیال بهزادی در 23 امرداد 1402، 11:53 ق‌ظ
بله. یه تحقیقی کردم؛ گویا این کتابخونه برای ویندوزه و می‌شه برای واین با libwine-dev نصبش کرد.
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 23 امرداد 1402، 12:35 ب‌ظ
کتابخونه‌ای به اسم conio.h وجود نداره. تو کدوم استاندارد چنین چیزی دیدی؟

تو اینرنت بگردی هست


و یکی از تمرینات برنامه نویسی که داشتم میکردم از این کتابخونه استفاده میکرد
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: Dragon- در 23 امرداد 1402، 02:12 ب‌ظ
برای c++ هم اینجوریه؟ یادمه توی گنو مشکلی نداشت!
نمی‌دونم.


درود خیلی ممنون

معادل اینها در curser.h  چی هست ؟؟

()gotoxy
()getch
()clrscr
()getche
()getchar
خوشون. مگه این رو نخوندید:
اکثر توابعی که توی conio.h هست، همراه ncurses هم پیدا میشه.

نقل‌قول
لازم نیست فایل نصبی رو در جایی قرار بدم؟ یا لینک کنم؟
()putch
()putchar
کدوم فایل نصبی؟ شما بسته libncurses-dev رو نصب می‌کنید. همراه اون، یه بسته مناسب که شامل فایل‌های header هست نصب میشه.
اون فایل‌ها داخل /usr/include/ قرار می‌گیرن. این یه مسیر پیش‌فرض هست که کامپایلر‌ها دنبال فایل‌های header می‌گردند.
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 23 امرداد 1402، 02:15 ب‌ظ
درود


رفتم فایل نصبی conio.h  رو نصب کردم
https://github.com/zoelabbb/conio.h

 (https://github.com/zoelabbb/conio.h)

و مو به مو انجام دادم

اما با این ارور ها مواجه شدم


In file included from n.c:2:
/usr/include/conio.h:144:1: error: unknown type name ‘class’
  144 | class __CONIO_H{
      | ^~~~~
/usr/include/conio.h:144:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
  144 | class __CONIO_H{
      |                ^
n.c: In function ‘main’:
n.c:7:9: error: request for member ‘clrscr’ in something not a structure or union
    7 |         clrscr();
      |         ^~~~~~
n.c:14:9: error: request for member ‘getch’ in something not a structure or union
   14 |         getch();
      |         ^~~~~




فکر کنم باید برم سراغ بسته پیشنهادی شما آقای دراگون :'(


ادیت:


libncurses-dev هم نصب کردم اما اتفاق خاصی نمیفته البته کد های برنامه رو تغیر دادم به این :

#include <stdio.h>
#include <curses.h>
int main()
{
int x, y, z, q;
clrscr();

printf ("\n give me 2 integers");

scanf("%d%d", &x, &y);

z = x * y;
q = (x + y) * 2;
printf("area=%d, width=%d", z, q);
getch();

return 0;
}





و با این ارور مواجه میشم:
n.c: In function ‘main’:
n.c:6:9: warning: implicit declaration of function ‘clrscr’ [-Wimplicit-function-declaration]
    6 |         clrscr();
      |         ^~~~~~
/usr/bin/ld: /tmp/ccA2FhHD.o: warning: relocation against `stdscr' in read-only section `.text'
/usr/bin/ld: /tmp/ccA2FhHD.o: in function `main':
n.c:(.text+0x21): undefined reference to `clrscr'
/usr/bin/ld: n.c:(.text+0x90): undefined reference to `stdscr'
/usr/bin/ld: n.c:(.text+0x98): undefined reference to `wgetch'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status





عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: دانیال بهزادی در 23 امرداد 1402، 08:28 ب‌ظ
تو اینرنت بگردی هست


و یکی از تمرینات برنامه نویسی که داشتم میکردم از این کتابخونه استفاده میکرد
استاندارد مثلاً C11 یا C17 منظورم بود که فهمیدم اصلاً یه سراینده که خود ویندوز به‌صورت غیراستاندارد اضافه‌اش کرده.

برای پاک کردن صفحه می‌تونی از stdlib استفاده کنی:
#include <stdlib.h>

int main() {
    system("clear");
    return 0;
}
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 23 امرداد 1402، 10:41 ب‌ظ
فعلا که کتابخونه curses.h مونده رو ددستم و هرچقدر میخونم تموم نمیشه!! ](*,)



نباید این کتابخونه ایی که میگی رو لینک کنم به کامپایلر۰ (  gcc main.c -lnstdlib.h ؟)


راستی وقتی داشتم سرچ میکردم به چند تا چیز برخوردم  اینکه :



<stdio.h>با

"stdio.h"
فرق داره اما کتابخونه ایی که استفاده میکرد فرق داشت( ماله یاضی بود)  میشه بپرسم فرقشون چیه؟


عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 23 امرداد 1402، 11:17 ب‌ظ
میشه دوستان بگن که


فایلهای  a.

c.  و ... چی هستند؟!


h.  که میشه فایل هدر اما بقیش رو مطمعن نیستم :'(
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: alend در 24 امرداد 1402، 12:46 ق‌ظ
میشه دوستان بگن که


فایلهای  a.

c.  و ... چی هستند؟!


h.  که میشه فایل هدر اما بقیش رو مطمعن نیستم :'(

".a" معمولا کتابخانه است که به صورت استاتیک کامپایل شده است.
".c" برانامه سی است :).
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 24 امرداد 1402، 12:28 ب‌ظ
خب a.  چی هست؟!
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: esmaeelE در 24 امرداد 1402، 01:26 ب‌ظ
خب a.  چی هست؟!

پیشنهاد می‌کنم برای شروع ابتدا یک کتاب خوب آموزش C بخونید.

https://forum.ubuntu-ir.org/index.php?topic=150453.msg1169817#msg1169817


پاسخ پرسشتان اینجا داده شده.
https://stackoverflow.com/a/9810368/7508077

عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 24 امرداد 1402، 04:15 ب‌ظ

نقل‌قول
پیشنهاد می‌کنم برای شروع ابتدا یک کتاب خوب آموزش C بخونید.



خوشبختانه یا متاسفانه دارم با جعفر نژاد پیش میرم اما قلزم رو پیدا نکردم ( برای زبان سی و گرنه زبان سی پلاس پلاس رو دارم   ) 





اما اصلا موافق نیستم که بگیم زبان سی منسوخ شده !!!  درسته یک سری مشکلات داره اما هنوز هم قابل استفاده اسست \\:D/
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 24 امرداد 1402، 09:59 ب‌ظ
درود!!!


بالاخره برنامه رو ساختم  این هم کد های برنامه ( اوپن سورسه  :P )

#include <stdio.h>
#include <curses.h>

int main()
{
        int x, z, q, y;
        initscr ();
        refresh();
        endwin();

        printf("\n give me 2 number");

        scanf("%d%d",&x, &y);
        z = x * y;
        q = (x + y) * 2;

        printf("\n area=%d, wide=%d", z,q);
        initscr();

        getch();
        endwin();

        return 0;
}





احساس خوبی دارم و باید هم داشته باشم.

بعد از این همه سر و کله زدن با یه عالمه مشکل بالاخره ساختمش!!


خب دوستان آیا کد بنده نیاز به بهینه سازی نداره؟؟؟  برنامه درست کار میکرد ولی احساس میکنم میتونه بهترم بشه


نظرتون چیه؟
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: alend در 25 امرداد 1402، 04:06 ق‌ظ
درود!!!


بالاخره برنامه رو ساختم  این هم کد های برنامه ( اوپن سورسه  :P )

#include <stdio.h>
#include <curses.h>

int main()
{
        int x, z, q, y;
        initscr ();
        refresh();
        endwin();

        printf("\n give me 2 number");

        scanf("%d%d",&x, &y);
        z = x * y;
        q = (x + y) * 2;

        printf("\n area=%d, wide=%d", z,q);
        initscr();

        getch();
        endwin();

        return 0;
}





احساس خوبی دارم و باید هم داشته باشم.

بعد از این همه سر و کله زدن با یه عالمه مشکل بالاخره ساختمش!!


خب دوستان آیا کد بنده نیاز به بهینه سازی نداره؟؟؟  برنامه درست کار میکرد ولی احساس میکنم میتونه بهترم بشه


نظرتون چیه؟

#include <stdio.h>
#include <ncurses.h>

int main()
{
    int x, y, area, perimeter;

    initscr(); // Initialize the ncurses library
    refresh();
    endwin();

    printf("\nGive me 2 numbers: "); // Fixed the message to make it grammatically correct

    scanf("%d%d", &x, &y);
    area = x * y; // Changed variable name from 'z' to 'area' for clarity
    perimeter = (x + y) * 2; // Changed variable name from 'q' to 'perimeter' for clarity

    printf("\nArea = %d, Perimeter = %d\n", area, perimeter);

    initscr();
    getch();
    endwin();

    return 0;
}
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: esmaeelE در 25 امرداد 1402، 05:27 ق‌ظ
متغیرها را پس از اعلان مقداردهی اولیه کنید. در این برنامه متغیرهای عددی با عدد صفر مقداردهی شوند.
چند متغیر را در یک خط اعلان نکنید.

مقداربازگشتی از تابع scanf را بررسی کنید که درست کار کرده باشد. در حالت کارکرد صحیح تعداد آرگومان‌های تطبیق داده شده را برمی‌گرداند. بهتره برای خواندن ورودی از getline به جای scanf استفاده کنید.
man scanf
برای تکمیل کردن فرایند کار دستورات مربوط به نصب کتابخانه‌هایی که استفاده‌ کردید و روش کامپایل برنامه را ارسال کنید.

عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 25 امرداد 1402، 09:05 ق‌ظ
صبح بخیر!!  :D


نقل‌قول


#include <stdio.h>
#include <ncurses.h>

int main()
{
    int x, y, area, perimeter;

    initscr(); // Initialize the ncurses library
    refresh();
    endwin();

    printf("\nGive me 2 numbers: "); // Fixed the message to make it grammatically correct

    scanf("%d%d", &x, &y);
    area = x * y; // Changed variable name from 'z' to 'area' for clarity
    perimeter = (x + y) * 2; // Changed variable name from 'q' to 'perimeter' for clarity

    printf("\nArea = %d, Perimeter = %d\n", area, perimeter);

    initscr();
    getch();
    endwin();

    return 0;



بله حق با شماست خوب نام گذاری نکردم ( اجرای برنامه برای من اولیوت بیشتری داشت  :) )
 

اما در  /usr/include  هم ncurses.h , curses.h  وجود داشتن!!
دقیقا چه فرقی دارن؟؟؟؟ آیا توابع متفاوتی دارند؟!


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



gcc x.c -lcurses



نقل‌قول
بهتره برای خواندن ورودی از getline به جای scanf استفاده کنید.



در stdio.h  قرار داره؟؟؟

از کجا به من پیج دستورات سی دسترسی داشته باشم؟؟

عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: learner:~$ در 25 امرداد 1402، 10:23 ق‌ظ
فقط برای  () getche(), getchar

 باید از چه توابعی استفاده کنم؟؟ ( curses.h )

چی پیشنهاد میدید؟
عنوان: پاسخ : نبود کتابخانه conio.h در زبان سی
ارسال شده توسط: esmaeelE در 25 امرداد 1402، 10:32 ق‌ظ
بله getline هم در stdlib قرار داره.



man getline

NAME

       getline, getdelim - delimited string input

LIBRARY
       Standard C library (libc, -lc)