C + + enthält bereits einen String-Vergleich -Funktion - " strcmp ()" - die die Aufgabe der Vergleich von zwei Strings für die Gleichstellung führt . Die strcmp ( )-Funktion gibt unterschiedliche Werte in Abhängigkeit von der Beziehung der Saiten zueinander . Die Implementierung einer Funktion strcmp () unterscheidet zwischen Rechnerarchitekturen (oder bleibt unter Lizenz von verschiedenen Anbietern ) , sondern ein Programmierer kann die grundlegende Funktionalität des Codes neu zu implementieren , um zu sehen , wie es funktioniert . Um die Funktion zu verstehen , aber der Programmierer muss verstehen, wie Strings, Arrays und Zeiger arbeiten in C und C + +. Strings, Arrays und Zeiger
In C sind Strings Sammlungen (oder Arrays) von Zeichen. Zum Beispiel
char string [ 10];
als ein Array von 10 Zeichen , "string" stellt einen Satz in C jedoch Arrays tatsächlich sind Zeiger oder Variablen , die sich auf Speicher -Adresse . Das Array "string" stellt tatsächlich einen Zeiger auf das erste Element in der Speicherblock , und der Programmierer kann die anderen Elemente im Array durch diese Zeiger zu verweisen .
Definieren " strcmp () "
Die grundlegende Definition einer Funktion strcmp wird wie folgt aussehen : int strcmp
(const char * str1 , const char * str2 );
Per Definition ein String-Vergleich -Funktion verwenden zwei Zeichen-Arrays ( str1 , str2 ) . Da die Arrays Zeiger darstellen , wird die Definition nehmen zwei Zeichen Zeigern. Mit diesen Zeiger kann der Programmierer jedes Element in einem Array gegen ein anderes Array zu überprüfen. Zunächst aber sollte der Programmierer erklären zwei Zeichen Variablen , die die Werte in den beiden Saiten gefunden halten :
int strcmp (const char * str1 , const char * str2 ) {
char a, b; }
Durchlaufen der Strings
um die Zeichenfolgen zu vergleichen , muss die Funktion jedes Zeichen in jeder vergleichen String zueinander . Um dies zu tun , verwendet der Programmierer die beiden Zeiger ( str1 , str2 ) nach unten zu bewegen jedes Array :
while ( * str1 = '\\ 0' && * str1 == * str2 ! ) {
< p> str1 + +; //bewegt sich der Zeiger des Strings str1 zum nächsten Zeichen
str2 + +; //macht das gleiche , str2
}
die while-Schleife hat die Suche : erstens, wenn str1 Treffern ein Trennzeichen ( "\\ 0" , die bis zum Ende des Strings durch die Sprache C angehängt wird ) , dann wird die Schleife beendet wird, weil diese Zeichenfolge ist getan. Zweitens, wenn der Wert von str1 (* str1 ) nicht gleich dem Wert von str2 (* str2 ) , dann wird die Schleife stoppt , weil die Saiten ungleich sind.
Gibt das Ergebnis
strcmp gibt einen der drei Ergebnisse : 0 ( wenn die Strings gleich sind ), 1 ( wenn der erste größer als der zweite ) und -1 (wenn die erste kleiner als der zweite ):
< p> char * a = str1 ;
char * b = str2 ;
if ( a == b) {
return 0; }
else {return
( (a < b ) -1 : 1 );}
da die Schleifen zu stoppen , wenn es Ungleichheit oder wenn beide fertig sind , wird das Ergebnis am Ende als zwei gleiche Zeichen ( der '\\ 0' Symbol ) oder die ungleichen Zeichen gefunden.
komplett -Code
Der vollständige Code , dann sieht ähnlich aus wie diese ( und Implementierungen wird je nach Technik oder System Bedingungen):
int strcmp (const char * str1 , const char * str2 ) {
char a , b;
while ( ! * str1 = '\\ 0' && * str1 == * str2 ) {
str1 + +; //bewegt sich der Zeiger des Strings str1 zum nächsten Zeichen
str2 + +; //hat die gleichen , str2
}
char a = * str1 ;
char * b = str2 ;
if ( a == b)
{ return 0; }
sonst
{return ( (a < b ) -1 : 1 );} }
< p > Eingabe von zwei Saiten , wie
char Zeichenfolge1 [40] = "Dies ist string";
char Zeichenfolge2 [40] = "Dies ist string";
int result = strcmp ( string1 , string2 );
0 zurück ;