الفرق بين strlen() و sizeof() للسلسلة في C
ما هو سترلين ()
strlen() هي دالة تستخدم للعثور على طول السلسلة. تقوم هذه الدالة بحساب إجمالي الأحرف الموجودة في السلسلة، مع إزالة الحرف الفارغ. يتضمن العدد الإجمالي للأحرف في السلسلة الحروف الأبجدية والأحرف الخاصة والأرقام، مع وجود مسافات فارغة.
ما هو حجم ()
sizeof() هي دالة تستخدم لحساب حجم المتعامل الخاص بها. وهي تعيد حجم متغير معين. يمكن تطبيق هذه الدالة على أي نوع بيانات، بما في ذلك الأنواع البدائية مثل الأعداد الصحيحة و أنواع المؤشرأو أنواع الفاصلة العائمة أو البنية أو الاتحاد. قد يختلف إخراج البرنامج الذي يحتوي على sizeof() في نظام 32 بت ونظام 64 بت.
الاختلافات الرئيسية
- يتم استخدام طريقة Strlen للعثور على طول المصفوفة بينما يتم استخدام طريقة sizeof () للعثور على الحجم الفعلي للبيانات.
- تقوم Strlen() بحساب عدد الأحرف في السلسلة بينما تقوم sizeof() بإرجاع حجم المتغير.
- يبحث Strlen() عن القيمة الخالية للمتغير ولكن sizeof() لا يهتم بقيمة المتغير.
- قيمة الإرجاع في strlen() طويلة int ومن ناحية أخرى قيمة الإرجاع في sizeof() غير موقعة int.
بناء جملة strlen()
strcount = strlen(my_string);
هنا، my_string هو متغير مصفوفة الأحرف.
مثال على strlen()
في برنامج C أدناه، قمنا بإعلان متغير سلسلة من النوع char. يتم تمرير متغير Strng كوسيطة للدالة strlen () للعثور على طول سلسلة.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
الإخراج:
Length of given string is: 7
بناء جملة sizeof()
بناء الجملة 1)
الحجم (النوع): النوع= النوع المشار إليه
مثال على sizeof(type):
في الكود أدناه، يعطي &type عنوان المتغير (double x). يتم زيادته بمقدار 1 مما يعطي العنوان الذي يمكنك تخزين المتغير التالي من النوع x فيه.
إن كتابة x في char* وأخذ الفرق سيمكنك من معرفة العدد الإجمالي للمتغيرات من النوع char المخزنة في الذاكرة. لقد استخدمنا getchar() لقراءة الأحرف.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
انتاج:
8
بناء الجملة 2)
حجم (اسم المتغير): Variable-name= اسم المتغير الذي ترغب في تحديد حجمه.
في برنامج C أدناه، نقوم بطباعة نوع بيانات الحجم char. تحتوي عبارة Printf على الدالة sizeof مع الوسيطة char.
مثال على sizeof(اسم المتغير):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
الإخراج:
sizeof(char) = 1
بناء الجملة 3)
حجم (التعبير): التعبير= التعبير الذي يجب عليك تقييمه.
مثال على sizeof(التعبير):
في البرنامج أدناه، نقوم أولاً بحساب وطباعة حجم المتغير. بعد ذلك، نقوم بتقييم التعبير، وتخزينه في المتغير a، وعرض النتيجة في عبارة printf.
#include<stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %d\n",sizeof(p)); printf("Size of an expression : %d\n",sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %d\n",sizeof(a)); return 0; }
الإخراج:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
الفرق بين strlen() و sizeof()
فيما يلي الاختلافات المهمة بين strlen() و sizeof():
سترلين () | حجم() |
---|---|
Strlen() هي دالة محددة مسبقًا، والتي تم تعريفها في ملف رأس يُعرف باسم string.h. | Sizeof() هو عامل أحادي أو تعبير وقت التجميع يحسب مقدار الذاكرة التي يشغلها متغير. |
تُستخدم هذه الطريقة للعثور على طول مصفوفة من السلسلة أو الحرف. | تُستخدم هذه الطريقة للعثور على الحجم الفعلي للبيانات (المخصصة) بالبايت. |
يقوم بحساب عدد الأحرف في السلسلة مع إزالة القيم الفارغة. | إنه يعيد حجم المتغير، وليس طول السلسلة (بما في ذلك القيم الفارغة). |
يقوم بتخصيص الذاكرة في وقت التشغيل والبحث عن القيمة الخالية للمتغير. | Sizeof() لا يهتم بقيمة المتغير. |
تعمل الدالة Strlen() فقط مع سلاسل الأحرف | ترجع الدالة Sizeof() مقدار الذاكرة المخصصة بالبايت. |
قيمة الإرجاع في strlen() طويلة. | قيمة الإرجاع في sizeof() غير موقعة. |
يوجد بناء جملة واحد فقط للدالة strlen() وهو int strlen(const char *str); | هناك ثلاثة صيغ لـ sizeof() 1) sizeof(type)، 2) sizeof(variable-name)، و 3) sizeof(expression): |