يمكن مقارنة السلاسل إما باستخدام دالة السلسلة أو بدون استخدام دالة السلسلة. أولاً، سننظر في كيفية مقارنة السلاسل بمساعدة دالة السلسلة، أي: ستركمب ()، والذي تم تعريفه في أ سلسلة. ح الملف الاساسي.
مقارنة السلسلة باستخدام وظيفة السلسلة
وظيفة السلسلة التي تم تعريفها مسبقًا في a سلسلة. ح ملف الرأس هو ستركمب () وظيفة. تعتبر الدالة strcmp() سلسلتين كمعلمة، وترجع هذه الدالة قيمة عددية حيث يمكن أن تكون القيمة الصحيحة صفر , إيجابي أو سلبي .
بناء جملة الدالة strcmp() موضح أدناه:
int strcmp (const char* str1, const char* str2);
في بناء الجملة أعلاه، يتم تمرير معلمتين كسلاسل، أي: str1 و str2 ، ونوع الإرجاع هو كثافة العمليات يعني أن الدالة strcmp() تُرجع قيمة عددية.
تقوم الدالة strcmp() بمقارنة أحرف كلا السلسلتين. إذا كان الحرف الأول من كلا السلسلتين متماثلًا، فستستمر عملية المقارنة هذه حتى تتم مقارنة جميع الأحرف أو يشير المؤشر إلى الحرف الفارغ ' '.
قيم الإرجاع المحتملة من الدالة strcmp()
قيمة الإرجاع | وصف |
---|---|
0 | عندما تكون كلا السلاسل متساوية. |
<0< td> | إذا كانت قيمة ASCII لحرف السلسلة الأولى أقل من قيمة ASCII لحرف السلسلة الثانية، فسترجع الدالة قيمة سالبة. | 0<>
>0 | إذا كانت قيمة ASCII لحرف السلسلة الأولى أكبر من قيمة ASCII لحرف السلسلة الثانية، فسترجع الدالة قيمة موجبة. |
دعونا نفهم من خلال مثال.
#include #include int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array int value; // declaration of integer variable printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf('strings are same'); else printf('strings are not same'); return 0; }
تحليل البرنامج أعلاه
- لقد أعلنا عن مصفوفتين من نوع char، أي str1 وstr2. نحن نأخذ مدخلات المستخدم كسلاسل.
- نقوم بمقارنة السلاسل باستخدام ستركمب () وظيفة، أي، strcmp(str1,str2). ستقوم هذه الوظيفة بمقارنة كل من السلاسل str1 وstr2. إذا كانت الدالة ترجع قيمة 0 فهذا يعني أن كلا السلاسل متماثلة، وإلا فإن السلاسل غير متساوية.
انتاج:
مقارنة السلسلة دون استخدام الدالة strcmp()
#include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf('strings are same'); else printf('strings are not same'); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=' ' &&b[i]!=' ') // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; }
تحليل البرنامج أعلاه
- في ما سبق، أعلنا عن مصفوفتين من نوع char، ونأخذ مدخلات المستخدم كسلاسل.
- لقد قمنا بتعريف دالة مقارنة () والتي ستأخذ سلاسل إدخال المستخدم كمعلمة، وتقارن كلا السلاسل. إذا كانت الدالة ترجع 0، فهذا يعني أن كلا السلسلتين متساويتين وإلا فإن كلا السلسلتين غير متساويتين .
انتاج:
مقارنة السلسلة باستخدام المؤشرات
#include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf(' Enter the second string : '); scanf('%s',str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf('strings are equal'); else printf('strings are not equal'); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=' ' && *b!=' ') // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; }
تحليل البرنامج أعلاه
- لقد أنشأنا صفيفين من نوع char str1 وstr2. نحن نأخذ مدخلات المستخدم كسلاسل.
- لقد قمنا بتعريف دالة stringcompare() والتي ستأخذ مؤشرين من نوع char كمعلمة. يحمل المؤشر 'a' عنوان str1 ويحمل المؤشر 'b' عنوان str2. داخل الدالة، قمنا بإنشاء حلقة while والتي سيتم تنفيذها حتى لا يصل المؤشر a أو b إلى حرف فارغ.
انتاج: