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
▶ مثال
#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;
}
▶ جرّب الكود
❓ أسئلة شائعة
س: ما الفرق بين sizeof وstrlen؟ ج: sizeof تُرجع إجمالي البايتات مع \0؛ strlen تُرجع طول السلسلة بدون \0.
س: ما هو size_t؟ ج: نوع عدد صحيح بدون إشارة يُستخدم لأحجام الكائنات، عادةً اسم بديل لـ unsigned long.
س: ماذا يعني %zu في printf؟ ج: محدد التنسيق لـ size_t، أُدخل في C99.
📖 ملخص
مرجع سريع لـ C: الكلمات المفتاحية، محددات التنسيق، أحرف الهروب، أسبقية العاملات ودوال المكتبة القياسية
📝 تمارين
اذكر جميع دوال إدخال/إخراج الملفات في stdio.h
اكتب برنامجًا للتحقق من أحجام أنواع البيانات على جهازك
استخدم معدّلات printf لطباعة جدول منسّق
فريق Web-Tutorial التقني
منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.
من نحن