Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

C strcmp funkcie

C + + už obsahuje reťazec porovnávacie funkcie - " strcmp ( ) " - ktorý vykonáva úlohu porovnávanie dvoch reťazcov pre rovnosť . Funkcie strcmp ( ) vracia rôzne hodnoty v závislosti na vzťahu reťazcov na seba . Implementácia strcmp ( ) funkcia sa líši medzi počítačových architektúr ( alebo zostáva pod licenciou od rôznych výrobcov ) , ale programátor môže reimplement základnú funkčnosť kódu vidieť , ako to funguje . Ak chcete porozumieť funkciu , však, programátor musí pochopiť, ako reťazce , polia a ukazovatele pracujú v C a C + + . Reťazce , polia a ukazovatele

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 ;

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené