Strings kan sammenlignes enten ved at bruge strengfunktionen eller uden at bruge strengfunktionen. Først vil vi se på, hvordan vi kan sammenligne strengene ved hjælp af strengfunktion, dvs. strcmp(), som er defineret i a streng.h header-fil.
Strengsammenligning ved hjælp af strengfunktion
Strengfunktionen, som er foruddefineret i en streng.h header-filen er en strcmp() fungere. Strcmp()-funktionen betragter to strenge som en parameter, og denne funktion returnerer en heltalsværdi, hvor heltalsværdien kan være nul , positiv eller negativ .
Syntaksen for strcmp()-funktionen er angivet nedenfor:
int strcmp (const char* str1, const char* str2);
I ovenstående syntaks sendes to parametre som strenge, dvs. str1 og str2 , og returtypen er int betyder, at strcmp() returnerer en heltalsværdi.
Strcmp()-funktionen sammenligner karakteren af begge strenge. Hvis det første tegn i begge strenge er det samme, vil denne sammenligningsproces fortsætte, indtil alle tegnene er sammenlignet, eller markøren peger på nul-tegnet ' '.
Mulige returværdier fra strcmp()-funktionen
Returværdi | Beskrivelse |
---|---|
0 | Når begge strenge er lige store. |
<0< td> | Hvis ASCII-værdien for et tegn i den første streng er mindre end ASCII-værdien for et tegn i den anden streng, vil funktionen returnere negativ værdi. | 0<>
>0 | Hvis ASCII-værdien for et tegn i den første streng er større end ASCII-værdien for et tegn i den anden streng, vil funktionen returnere positiv værdi. |
Lad os forstå gennem et eksempel.
#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; }
Analyse af ovenstående program
- Vi har erklæret to arrays af char-type, dvs. str1 og str2. Vi tager brugerinput som strenge.
- Vi sammenligner strengene ved at bruge strcmp() funktion, dvs. strcmp(str1,str2). Denne funktion vil sammenligne både strengene str1 og str2. Hvis funktionen returnerer værdien 0, betyder det, at begge strenge er ens, ellers er strengene ikke ens.
Produktion:
Strengsammenligning uden at bruge strcmp()-funktionen
#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; }
Analyse af ovenstående program
- I ovenstående har vi erklæret to arrays af char-type, og vi tager brugerinputtet som strenge.
- Vi har defineret en compare() funktion, som tager brugerinputstrenge som en parameter og sammenligner begge strenge. Hvis funktionen returnerer 0, hvilket betyder, at begge strenge er ens, ellers er begge strenge ikke ens .
Produktion:
Strengsammenligning ved hjælp af pointere
#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; }
Analyse af ovenstående program
- Vi har lavet to arrays af char type str1 og str2. Vi tager brugerinput som strenge.
- Vi har defineret en stringcompare() funktion, som tager to pointere af char-typen som en parameter. 'a'-markøren holder adressen på str1 og 'b'-markøren holder adressen på str2. Inde i funktionen har vi lavet en while-løkke, som vil køre indtil markøren a eller b ikke er nået til et nul-tegn.
Produktion: