Стрингови се могу поредити било коришћењем стринг функције или без употребе стринг функције. Прво ћемо погледати како можемо упоредити низове уз помоћ стринг функције, тј. стрцмп(), који је дефинисан у а стринг.х датотека заглавља.
Поређење стрингова коришћењем стринг функције
Функција стринга која је унапред дефинисана у а стринг.х датотека заглавља је а стрцмп() функција. Функција стрцмп() сматра два низа као параметар, а ова функција враћа целобројну вредност где целобројна вредност може бити нула , позитивним или негативан .
Синтакса функције стрцмп() је дата у наставку:
int strcmp (const char* str1, const char* str2);
У горњој синтакси, два параметра се прослеђују као стрингови, тј. стр1 и стр2 , а тип враћања је инт значи да стрцмп() враћа целобројну вредност.
Функција стрцмп() упоређује карактер оба стринга. Ако је први знак оба низа исти, онда ће се овај процес поређења наставити све док се сви карактери не упореде или док показивач не покаже на нулти карактер ' '.
Могуће повратне вредности из функције стрцмп().
Повратна вредност | Опис |
---|---|
0 | Када су обе жице једнаке. |
<0< td> | Ако је АСЦИИ вредност знака првог низа мања од АСЦИИ вредности знака другог низа, онда ће функција вратити негативну вредност. | 0<>
>0 | Ако је АСЦИИ вредност знака првог низа већа од АСЦИИ вредности знака другог низа, онда ће функција вратити позитивну вредност. |
Хајде да разумемо кроз пример.
#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; }
Анализа наведеног програма
- Декларисали смо два низа типа цхар, тј. стр1 и стр2. Унос корисника узимамо као низове.
- Упоређујемо низове користећи стрцмп() функција, тј. стрцмп(стр1,стр2). Ова функција ће упоредити и стрингове стр1 и стр2. Ако функција врати вредност 0 значи да су оба низа иста, у супротном стрингови нису једнаки.
Излаз:
Поређење стрингова без употребе функције стрцмп().
#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; }
Анализа наведеног програма
- У горњем тексту смо декларисали два низа типа цхар, а унос корисника узимамо као стрингове.
- Дефинисали смо функцију цомпаре() која ће узети низове за унос корисника као параметар и упоредити оба низа. Ако функција врати 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; }
Анализа наведеног програма
- Направили смо два низа цхар типа стр1 и стр2. Унос корисника узимамо као низове.
- Дефинисали смо функцију стрингцомпаре() која ће узети два показивача типа цхар као параметар. Показивач 'а' садржи адресу стр1, а 'б' показивач садржи адресу стр2. Унутар функције смо креирали вхиле петљу која ће се извршавати све док показивач а или б не дође до нул карактера.
Излаз: