C: مرجع لغة C

هذا مرجع سريع — لا حاجة لقراءته من البداية للنهاية. فقط ابحث عندما تحتاج.

1. مرجع سريع للكلمات المفتاحية

(1) كلمات C89 المفتاحية (32)

الكلمة المفتاحية الوصف
auto مدة تخزين تلقائية (افتراضي)
break الخروج من حلقة أو switch
case تسمية فرع switch
char نوع الحرف
const مُؤهّل الثابت
continue القفز إلى التكرار التالي في الحلقة
default الفرع الافتراضي في switch
do حلقة do-while
double فاصلة عائمة مزدوجة الدقة
else فرع else في if-else
enum نوع التعداد
extern إقران الربط الخارجي
float فاصلة عائمة أحادية الدقة
for حلقة for
goto قفز غير مشروط
if جملة شرطية
int نوع العدد الصحيح
long مُؤهّل العدد الصحيح الطويل
register تلميح تخزين السجل
return عودة الدالة
short مُؤهّل العدد الصحيح القصير
signed مُؤهّل التوقيع
sizeof الحصول على حجم النوع أو المتغير
static مدة تخزين ساكنة أو ربط داخلي
struct البنية
switch اختيار متعدد الفروع
typedef اسم مستعار للنوع
union الاتحاد
unsigned مُؤهّل عدم التوقيع
void النوع الفارغ
volatile مُؤهّل منع التحسين
while حلقة while

(2) كلمات C99 المفتاحية الجديدة (5)

الكلمة المفتاحية الوصف
_Bool نوع منطقي (عادةً عبر ماكرو bool)
_Complex نوع العدد المركب
_Imaginary نوع العدد التخيلي
inline تلميح الدالة المضمنة
restrict تقييد اسمية المؤشرات

(3) كلمات C11 المفتاحية الجديدة (7)

الكلمة المفتاحية الوصف
_Alignas محدد المحاذاة
_Alignof الحصول على متطلب المحاذاة
_Atomic النوع الذري
_Generic الاختيار العام
_Noreturn الدالة لا تُرجع
_Static_assert التأكيد الساكن
_Thread_local التخزين المحلي للخيط

2. مرجع سريع لمحددات التنسيق

(1) محددات تنسيق printf

المحدد نوع الإخراج مثال
%d / %i عدد صحيح عشري موقّع printf("%d", 42) ← 42
%u عدد صحيح عشري غير موقّع printf("%u", 42U) ← 42
%o ثماني غير موقّع printf("%o", 8) ← 10
%x سداسي عشري غير موقّع (حروف صغيرة) printf("%x", 255) ← ff
%X سداسي عشري غير موقّع (حروف كبيرة) printf("%X", 255) ← FF
%f فاصلة عائمة عشرية printf("%f", 3.14) ← 3.140000
%e تدوين علمي (e صغيرة) printf("%e", 0.001) ← 1.000000e-03
%E تدوين علمي (E كبيرة) printf("%E", 0.001) ← 1.000000E-03
%g اختيار تلقائي %f أو %e printf("%g", 0.0001) ← 0.0001
%c حرف printf("%c", 'A') ← A
%s سلسلة printf("%s", "hi") ← hi
%p عنوان المؤشر printf("%p", ptr) ← 0x7ffd...
%ld long printf("%ld", 100000L)
%lld long long printf("%lld", 1LL<<40)
%zu size_t printf("%zu", sizeof(int))
%% علامة النسبة المئوية نفسها printf("100%%") ← 100%

(2) مُعدّلات printf

المُعدّل المعنى مثال
%- محاذاة لليسار "%-10s"
%0 حشو بأصفار "%05d" ← 00042
%m عرض الحقل الأدنى "%10d"
%.n الدقة "%.2f" ← 3.14

(3) محددات تنسيق scanf

المحدد نوع القراءة
%d int
%u unsigned int
%ld long
%f float
%lf double
%c حرف
%s سلسلة (تتوقف عند مسافة بيضاء)
%[...] مجموعة مسح
%*d قراءة لكن تجاهل

3. جدول أحرف الهروب

تسلسل الهروب المعنى قيمة ASCII
\a تنبيه (جرس) 7
\b رجوع 8
\f تغذية الصفحة 12
\n سطر جديد 10
\r رجوع بداية السطر 13
\t جدول أفقي 9
\v جدول عمودي 11
\\ شرطة مائلة خلفية 92
\' علامة اقتباس مفردة 39
\" علامة اقتباس مزدوجة 34
\0 الحرف الفارغ 0
\ooo قيمة ثمانية
\xhh قيمة سداسية عشرية

4. جدول أسبقية العاملات

مرتبة من الأعلى إلى الأدنى. العاملات في نفس السطر لها أسبقية متساوية:

الأسبقية العاملات التجميع الوصف
1 () [] -> . ++(لاحق) --(لاحق) يسار→يمين لاحقة
2 ++(سابق) --(سابق) + - ! ~ *(إلغاء إشارة) &(عنوان) sizeof (نوع) يمين→يسار أحادي
3 * / % يسار→يمين ضربي
4 + - يسار→يمين جمعي
5 << >> يسار→يمين إزاحة
6 < <= > >= يسار→يمين علائقي
7 == != يسار→يمين مساواة
8 & يسار→يمين AND على البتات
9 ^ يسار→يمين XOR على البتات
10 | يسار→يمين OR على البتات
11 && يسار→يمين AND المنطقي
12 || يسار→يمين OR المنطقي
13 ?: يمين→يسار شرطي
14 = += -= *= /= %= &= ^= |= <<= >>= يمين→يسار إسناد
15 , يسار→يمين فاصلة
💡 نصيحة: ذاكرة مساعدة: أحادي → ضربي → جمعي → إزاحة → علائقي → مساواة → AND على البتات → XOR → OR على البتات → AND المنطقي → OR المنطقي → شرطي → إسناد → فاصلة


5. مرجع دوال الملفات الرأسية الشائعة

(1) stdio.h

الدالة الغرض
printf إخراج منسق إلى stdout
fprintf إخراج منسق إلى ملف
sprintf إخراج منسق إلى سلسلة
snprintf إخراج منسق إلى سلسلة (آمن)
scanf قراءة منسقة من stdin
fscanf قراءة منسقة من ملف
sscanf قراءة منسقة من سلسلة
fopen فتح ملف
fclose إغلاق ملف
fgetc قراءة حرف واحد
fputc كتابة حرف واحد
fgets قراءة سطر واحد
fputs كتابة سلسلة
fread قراءة ثنائية
fwrite كتابة ثنائية
fseek ضبط موضع الملف
ftell الحصول على موضع الملف
rewind إعادة موضع الملف إلى البداية
feof فحص نهاية الملف
ferror فحص خطأ الملف
fflush تفريغ المخزن المؤقت
remove حذف ملف
rename إعادة تسمية ملف
tmpfile إنشاء ملف مؤقت
perror طباعة رسالة خطأ

(2) stdlib.h

الدالة الغرض
malloc تخصيص ذاكرة ديناميكية
calloc تخصيص ذاكرة وتصفيرها
realloc إعادة تخصيص ذاكرة
free تحرير الذاكرة
atoi سلسلة إلى int
atol سلسلة إلى long
atof سلسلة إلى double
strtol سلسلة إلى long (آمن)
strtod سلسلة إلى double (آمن)
rand توليد عدد عشوائي
srand ضبط البذرة العشوائية
qsort ترتيب سريع
bsearch بحث ثنائي
abs القيمة المطلقة للأعداد الصحيحة
labs القيمة المطلقة لـ long
exit إنهاء البرنامج
atexit تسجيل دالة خروج
system تنفيذ أمر نظام
getenv الحصول على متغير بيئة

(3) string.h

الدالة الغرض
strcpy نسخ سلسلة
strncpy نسخ سلسلة (آمن)
strcat دمج سلاسل
strncat دمج سلاسل (آمن)
strcmp مقارنة سلاسل
strncmp مقارنة سلاسل (بطول محدد)
strlen طول السلسلة
strchr البحث عن حرف (من اليسار)
strrchr البحث عن حرف (من اليمين)
strstr البحث عن سلسلة فرعية
strtok تقسيم السلسلة
memcpy نسخ ذاكرة
memmove نقل ذاكرة (يسمح بالتداخل)
memset تعبئة ذاكرة
memcmp مقارنة ذاكرة

(4) math.h

الدالة الغرض
fabs القيمة المطلقة العشرية
sqrt الجذر التربيعي
pow الأُس
ceil تقريب لأعلى
floor تقريب لأدنى
round تقريب لأقرب
fmod باقي القسمة العشرية
log اللوغاريتم الطبيعي
log10 اللوغاريتم العشري
sin جيب
cos جيب التمام
tan ظل
asin جيب القوس
acos جيب تمام القوس
atan ظل القوس
atan2 ظل القوس (بمعاملين)

(5) ctype.h

الدالة الغرض
isalpha هل هو حرف
isdigit هل هو رقم
isalnum هل هو حرف أو رقم
isupper هل هو حرف كبير
islower هل هو حرف صغير
isspace هل هو مسافة بيضاء
ispunct هل هو علامة ترقيم
isprint هل هو حرف قابل للطباعة
toupper تحويل إلى حرف كبير
tolower تحويل إلى حرف صغير

(6) time.h

الدالة/الماكرو الغرض
time الحصول على الوقت الحالي
clock الحصول على دورات ساعة المعالج
localtime التحويل إلى الوقت المحلي
gmtime التحويل إلى وقت UTC
strftime تنسيق الوقت
difftime حساب فرق الوقت
mktime تحويل tm إلى time_t
CLOCKS_PER_SEC دورات الساعة في الثانية

(7) assert.h

الدالة/الماكرو الغرض
assert(expr) تأكيد؛ إنهاء عند الفشل
NDEBUG تعطيل assert عند تعريفه

(8) errno.h

الرمز الغرض
errno متغير رمز الخطأ الشامل
EDOM خطأ المجال
ERANGE خطأ النطاق

6. مرجع سريع لنطاقات أنواع البيانات

النوع الحجم (بايت) الأدنى الأقصى
char 1 -128 127 أو 0/255
signed char 1 -128 127
unsigned char 1 0 255
short 2 -32768 32767
unsigned short 2 0 65535
int 4 -2147483648 2147483647
unsigned int 4 0 4294967295
long 4/8 يعتمد على المنصة يعتمد على المنصة
unsigned long 4/8 0 يعتمد على المنصة
long long 8 -9223372036854775808 9223372036854775807
float 4 ~1.2e-38 ~3.4e+38
double 8 ~2.2e-308 ~1.8e+308

▶ مثال

C
#include <stdio.h>
#include <string.h>

int main(void) {
    char str[] = "Hello";
    printf("strlen: %zu\n", strlen(str));
    printf("sizeof: %zu\n", sizeof(str));
    return 0;
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
strlen: 5
sizeof: 6


❓ أسئلة شائعة

س: ما الفرق بين sizeof وstrlen؟ ج: sizeof تُرجع إجمالي البايتات مع \0؛ strlen تُرجع طول السلسلة بدون \0.

س: ما هو size_t؟ ج: نوع عدد صحيح بدون إشارة يُستخدم لأحجام الكائنات، عادةً اسم بديل لـ unsigned long.

س: ماذا يعني %zu في printf؟ ج: محدد التنسيق لـ size_t، أُدخل في C99.


📖 ملخص


📝 تمارين

  1. اذكر جميع دوال إدخال/إخراج الملفات في stdio.h
  2. اكتب برنامجًا للتحقق من أحجام أنواع البيانات على جهازك
  3. استخدم معدّلات printf لطباعة جدول منسّق
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%