Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
C , reťazce sú zbierky ( alebo pole ) znakov . Napríklad ,
char string [ 10 ] ;
poľa 10 znakov , " string " predstavuje trest v C. Avšak , polia sú vlastne odkazy , alebo premenné odkazuje na adresu pamäti . Pole " string " v skutočnosti predstavuje ukazovateľ na prvú položku v bloku pamäti , a programátor môže odkazovať na iné položky v poli pomocou tohto ukazovateľa .
Definícia " strcmp ( ) "
základné definície funkcie strcmp bude vyzerať podobne ako tento :
int strcmp ( const char * str1 , const char * str2 ) ;
Podľa definície , funkcia nákupný reťazcov bude využívať dve znakové pole ( str1 , str2 ) . Vzhľadom k tomu , že polia predstavujú ukazovatele , bude definícia trvať dva ukazovatele znak . S týmito ukazovateľmi , môže programátor kontrolovať každú položku v poli proti iné pole . Najprv však programátor by mal vyhlásiť dve znakovej premennej , ktorá bude držať hodnoty nájdené vo dvoch reťazcov :
int strcmp ( const char * str1 , const char * str2 ) {
char , b ;
}
přejet Struny
Aby porovnať reťazca , musí byť funkcia porovnať každý znak v každej string navzájom . Ak to chcete vykonať , programátor používa dva ukazovatele ( str1 , str2 ) pre pohyb nadol každého poľa :
while ( * str1 = ' \\ 0 ' && * str1 == * str2 ! ) {
str1 + + ; //presunie ukazovateľ na reťazec str1 na ďalší znak
str2 + + ; //to isté , str2
}
kým slučka robí hľadanie : za prvé, ak je str1 hity zakončovací znak ( " \\ 0 " , ktorý je pripojený na konci reťazca podľa jazyka C ) , potom sa slučka ukončí , pretože reťazec je hotovo . Po druhé , v prípade , že hodnota str1 ( * str1 ) sa nerovná hodnote str2 ( * str2 ) , potom sa slučka zastaví , pretože reťazce sú nerovné .
Vráti výsledok
strcmp vracia jednu z troch výsledkov : 0 (ak sú reťazce zhodné ) , 1 ( v prípade , že prvý je väčší ako druhý ) a -1 (ak je prvá menšia než druhý ) :
char = * str1 ;
char b = * str2 ;
if ( a == b )
{ return 0 ; }
iný
{ return ( ( < b ) -1 : 1 ) ; }
Vzhľadom k tomu , slučky zastaví , keď je nerovnosť alebo keď sú obaja hotoví , bude výsledok skončí ako dva rovnaké znaky ( symbol ' \\ 0 ' ) alebo nerovné znaky nájdených .
kompletný kód
kompletné kód , potom vyzerá podobne ako tento ( a implementácia sa bude líšiť v závislosti na technike alebo systémových podmienok ) :
int strcmp ( const char * str1 , const char * str2 ) {
char , b ;
while ( * str1 = ' \\ 0 ' && * str1 == * str2 ) {
str1 + + ; ! //presunie ukazovateľ na reťazec str1 na ďalší znak
str2 + + ; //áno To isté , str2
}
char = * str1 ;
char b = * str2 ;
if ( a == b )
{ return 0 ; }
iného
{ return ( ( < b ) -1 : 1 ) ; }
}
zadávanie dva reťazce , ako je napríklad
char string1 [ 40 ] = " Toto je reťazec " ;
char string2 [ 40 ] = " Toto je reťazec " ;
int výsledok = strcmp ( řetězec1 , reťazec2 ) ;
vráti 0 ;