Nwlapcug.com


C per funzione Strcmp

C per funzione Strcmp


C++ contiene già una funzione di confronto di stringa-"strcmp ()"..--che esegue l'operazione di confronto di due stringhe per uguaglianza. La funzione strcmp () restituisce valori diversi a seconda del rapporto delle stringhe ad uno altro. L'implementazione di una funzione strcmp () differisce tra architetture di calcolatore (o rimane sotto licenza da fornitori diversi), ma un programmatore può reimplementare la funzionalità di base del codice per vedere come funziona. Per comprendere la funzione, tuttavia, il programmatore deve comprendere il funzionano di stringhe, matrici e puntatori in C e C++.

Stringhe, array e puntatori

In C, le stringhe sono insiemi (o matrici) di caratteri. Per esempio

stringa char [10];

Come una matrice di 10 caratteri, "stringa" rappresenta una frase in C. Tuttavia, le matrici sono in realtà i puntatori, o variabili relative all'indirizzo di memoria. La matrice "stringa" in realtà rappresenta un puntatore al primo elemento del blocco di memoria, e il programmatore può fare riferimento gli altri elementi della matrice tramite questo puntatore.

Definizione di "strcmp ()"

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

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

Per definizione, una funzione di confronto di stringa utilizzerà due matrici di caratteri (str1, str2). Poiché le matrici rappresentano puntatori, è necessario che la definizione terrà due puntatori di carattere. Con questi puntatori, il programmatore può controllare ogni elemento in una matrice contro un'altra matrice. In primo luogo, tuttavia, il programmatore deve dichiarare due variabili di carattere, che conterranno i valori trovati nelle due stringhe:

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

char a, b;

}

Le stringhe di attraversamento

Al fine di confrontare le stringhe, la funzione deve confrontare ogni carattere di ciascuna stringa uno a altro. Per effettuare questa operazione, il programmatore utilizza i due puntatori (str1, str2) per spostare verso il basso ogni matrice:

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

str1 + +; Sposta il puntatore della stringa str1 al carattere successivo

str2 + +; fa la stessa, str2

}

While ciclo fa la ricerca: in primo luogo, se str1 colpisce un carattere di terminazione ("\0" che viene aggiunto alla fine di stringhe dal linguaggio C), quindi il ciclo si chiude, perché tale stringa è fatto. Secondo, se il valore di str1 (str1) non è uguale al valore di str2 (str2), poi il ciclo si arresta, perché le stringhe non sono uguali.

Restituzione del risultato

Strcmp restituisce uno dei tre risultati: 0 (se le stringhe sono uguali), 1 (se il primo è maggiore del secondo) e -1 (se il primo è minore del secondo):

char a = * str1;

char b = * str2;

Se (a = = b).

{return 0;}

altro

{return ((a < b)? -1: 1);}

Poiché i loop interrompere quando c'è disuguaglianza o quando entrambi sono finiti, il risultato finirà come due caratteri uguali (il simbolo di '\0') o i caratteri disuguali trovati.

Codice completo

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

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

char a, b;

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

str1 + +; Sposta il puntatore della stringa str1 al carattere successivo

str2 + +; fa la stessa, str2

}

char a = * str1;

char b = * str2;

Se (a = = b).

{return 0;}

altro

{return ((a < b)? -1: 1);}

}

immissione di due stringhe, come

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

char string2 [40] = "Questa è la stringa";

int risultato = strcmp (stringa1, stringa2);

restituirà 0;