Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

C per Strcmp Funzione

C + + contiene già una funzione di confronto di stringa - " strcmp ( ) " - che svolge il compito di confrontare due stringhe per l'uguaglianza. Il strcmp ( ) restituisce valori diversi a seconda del rapporto delle corde tra loro . L' implementazione di una funzione strcmp ( ) differisce tra architetture di computer ( o rimane in licenza da fornitori diversi ) , ma un programmatore può implementare nuovamente la funzionalità di base del codice per vedere come funziona. Per capire la funzione , però , il programmatore deve capire come stringhe, vettori e puntatori lavorano in C e C + + . Stringhe, vettori e puntatori

In C , le stringhe sono collezioni ( o array ) di caratteri. Per esempio , Stati stringa char

[ 10 ] ;

un array di 10 caratteri , " stringa " rappresenta una frase in C. Tuttavia , le matrici sono in realtà puntatori , o variabili relative all'indirizzo di memoria . L'array " stringa" rappresenta in realtà un puntatore al primo elemento nel blocco di memoria , e il programmatore può fare riferimento agli altri elementi della serie attraverso questo puntatore .
Definire " strcmp ( ) "

La definizione di base di una funzione strcmp sarà simile a questa :

int strcmp ( const char * str1 , char * str2 ) ;

per definizione , un funzione di confronto di stringa utilizzerà due array di caratteri ( str1 , str2 ) . Dal momento che le matrici rappresentano puntatori , la definizione avrà due puntatori di caratteri. Con questi puntatori , il programmatore può controllare ogni elemento in un array contro un altro array. Prima, però, il programmatore deve dichiarare due variabili carattere , che conterrà i valori riscontrati nelle due stringhe :

int strcmp ( const char * str1 , char * str2 ) {

char a, b;

}
Attraversa la Strings

Per confrontare le stringhe , la funzione deve confrontare ogni carattere in ogni stringa tra loro . Per fare questo, il programmatore utilizza i due puntatori ( str1 , str2 ) per spostare verso il basso ogni array :

while ( * str1 = '\\ 0' && * str1 == str2 * ! ) {

str1 + + ; //sposta il puntatore del str1 stringa al carattere

str2 + + ; //fa lo stesso , str2

}

il ciclo while fa il ricerca : in primo luogo , se str1 colpi di un carattere di terminazione ( " \\ 0 ", che viene aggiunto alla fine di stringhe dal linguaggio C ) , allora il ciclo viene chiuso , perché quella stringa è fatto . In secondo luogo, se il valore di str1 ( * str1 ) non è uguale al valore di str2 ( * str2 ) , poi il ciclo si interrompe , perché le stringhe sono uguali .
Restituzione del risultato
< br

Strcmp > restituisce uno dei tre risultati : 0 ( se le stringhe sono uguali ) , 1 (se la prima è maggiore della seconda ) e -1 ( se la prima è minore della seconda ) :

char a = * str1 ;

char b = * str2 ;

if ( a == b ) per

{ return 0; }

altro

{return ( ( a

Poiché i cicli si fermano quando c'è disuguaglianza o quando entrambi sono terminati , il risultato finirà come due caratteri uguali ( il '\\ 0' simbolo ) oi caratteri diseguali trovati.
completo del codice

il codice completo , quindi , è simile a questo ( e le implementazioni varierà , a seconda tecnica o di condizioni di sistema ) :

int strcmp ( const char * str1 , char * str2 ) {

char a , b ;

while ( ! * str1 = '\\ 0' && * str1 == * str2 ) {

str1 + + ; //sposta il puntatore della stringa str1 al successivo carattere

str2 + + ; //fa la stesso , str2

}

char a = * str1 ;

char b = * str2 ;

if ( a == b ) per

{ return 0; }

altro

{return ( ( a


inserendo due stringhe , come ad esempio

char stringa1 [ 40 ] = " Questa è una stringa " ;

char stringa2 [ 40 ] = " Questa è una stringa " ;

int risultato = strcmp ( stringa1, stringa2 ) ;

tornerà 0 ;

 

Programmazione © www.354353.com