الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عدة أسئلة عن السي ...

مغلق
بدأه talal*c في 10 مارس 2002 · 4 رد · 479 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكنني قراءة بعض الدول في السي ( الكود تبعها )

مثل strcmp , strcpy , isalpha وما إلى ذلك من الدوال ...

وأيضاً كيف من الممكن أن أضيف هيدر فايل للكمبايلر عندي

أنا عندي بعض الملفات الهيدر للسي و أريد إضافتها لإستخدامها ...

وانا عندي أيضاً بعض الدوال أريد إستخدامها مع هيدر فايل بحيث لا

أكتب جسم الدالة في كل برنامج .

مع خالص تحياتي ,,,,

#2

بالنسبه للجزء الثاني من البرنامج وجدت الحل في أحد الكتب التي لدي

بالصدفة في موضوع الدوال . وهذه هي الطريقة لكي تعم الفائدة .

أكتب الملف الذي تحتاج دوالة و بدون ان تكتب الدالة الرئيسية main

وإحفظة تحت الامتداد c.* أو cpp.* .

وبعد ذلك في أي برنامج تحتاج الدول التي كتبت في هذا الملف

ما عليك إلا أن تكتب الامر التالي :

include "your_file.c"

your_file.c هذا إسم إختياري للملف الذي حفظته قبل قليل .

وإستخدم هذه الدوال على راحتك . :)

وهذا مثال عملته انا ( أخذته من أحد المنتديات الاجنبية )

لبعض الدوال في السي التي لا تدعمها المايكروسوفت مثل

clrscr , textcolor , textbackground , gotoxy

وأرجو أن ينفع الله بها ...

و يعني هذا مثال عملي لكل من يعمل على مايكروسوفت

وتحسسو الفرق :D

طبعاً هذا الملف من نوع سي++ ( ماهو راضي يعمل على السي )

ولكن يمكن إضافة هذا الملف إلى أي ملف سي.

#include < windows.h > // foe win application

enum COLORS {BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY,

DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA,

YELLOW, WHITE};

WORD m_CurrentColor;

HANDLE m_hConsole;

int __BACKGROUND = BLACK, __FOREGROUND = LIGHTGRAY;

void clrscr();

void gotoxy(int x, int y);

void textcolor(int);

void textbackground(int);

//---------------------------------------

void clrscr()

{

COORD coordScreen = { 0, 0 };

DWORD cCharsWritten;

CONSOLE_SCREEN_BUFFER_INFO csbi;

DWORD dwConSize;

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

GetConsoleScreenBufferInfo(hConsole, &csbi);

dwConSize = csbi.dwSize.X * csbi.dwSize.Y;

FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);

GetConsoleScreenBufferInfo(hConsole, &csbi);

FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);

SetConsoleCursorPosition(hConsole, coordScreen);

}

//----------------------------------------

void gotoxy(int x, int y)

{

COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

//----------------------------------------

void textbackground(int color)

{

__BACKGROUND = color;

SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),

__FOREGROUND + (color :(

وأطلب ممن لدية معلومة أن يرشدني ...

ويا إخوان بالنسبة إذا ضميت الملف يعطي إنذارين ما أدري ليش

ممكن أحد يدلنا ؟؟؟؟ !!!!

مع خالص تحياتي ,,,

#3

بسم الله الرحمن الرحيم...

حسب علمي .. أنه لكي تعمل ملف هيدر... يجب أن تكتب ملف .. دون كتابة main حسب . ومن ثم حفظ الملف بإمتداد... .h !

بالنسبه .. لفتح ملفات المكتبات...( h. ) فقم بالبحث عن اسم المكتبه ( هذي الطريقه السريعه ) .. في الويندوز اسم المكتبه بالإمتداد .. ومن ثم افتحه .. أنا فوجئت بطلاسم .. في بعض المكتبات.. لكن عسى أن يكون ما تبحث عنه مفهوما طريقة برمجته.

014.gif
#4

أخي طلال ..

السؤال الأول : ليس كل نسخ السي تعطيك السورس كود تبع المكتبات القياسية .. الفجوال سي ممكن تعطيك اياهم بشرط أن تختار ذلك عند تنزيل الفجوال سي وتجدهم في الدليل src .

السؤال الثانية : برنامج السي يتكون من عدة modules أو ملفات مصدر منفصلة يتم ترجمتهم بشكل منفصل ودمجهم لاحقا باستخدام ال linker من أجل تكوين الملف التنفيذي النهائي .. الinclude تستخدم فقط من أجل ادراج التعاريف أو الfunction prototypes في ملفك وليس من أجل ادراج كل ملف السي .. مثلا إذا عملت مكتبة فسوف تكتب التعاريف العامة في ملف h والكود سوف يكون في ملف c يتم ادراج ملف ال h في الملف الذي تريد فيه استخدام التوابع تبع تلك المكتبة ومنه يتم الترجمة بشكل منفصل والربط بعد ذلك لكلا ملفان السي .. طبعا يمكن أن تترجم ملف السي تبع المكتبة وتضعه في مكتبه امتدادها lib يمكنك أن تستخدمها في أي برنامج من غير ترجمة .

Coding on the Cloud and for the Cloud!

My Blog

#5

السؤال الاول

عمل المترجمات(compilers(s يعتمد على تصفية البرنامج الذ ي كتبته ثم مقارنته بملفات headers التي تنتهي ب h. والتي يكون فيها تعريف ال prototype لكل الوظائف المدعومة بذلك المترجم ويقوم بتحويل ملفك الى ملف binary من نوع obj.

ثم ياتي دور linker الذي يقارن ما يوجد في ملفك الجديد ب المكتبات lib

. والتي يربطها المترجم بملفك الجديد ليتم صنع ملف تنفيذي exe.

مثلا printf يوجد تعريفها(prototype) في ملف header كما يوجد النص الحقيقي في ملف المكتبة والذ ي امتداده .lib والذي لا يمكن قرائته،

اذا سالت عن مكتبات السي فهي مئات الاف او ملايين الاسطر ولكن تحول الى مكتبات حتى يقل الحجم(حجم بيئة التطوير) وحفاظا على مصدر النص(الكود)

هذا الموضوع مغلق.

مواضيع مشابهة