Le stringhe possono essere confrontate utilizzando la funzione stringa o senza utilizzare la funzione stringa. Innanzitutto, vedremo come confrontare le stringhe con l'aiuto della funzione stringa, ovvero strcmp(), che è definito in a stringa.h file di intestazione.
Confronto tra stringhe utilizzando la funzione stringa
La funzione stringa predefinita in a stringa.h il file di intestazione è un file strcmp() funzione. La funzione strcmp() considera due stringhe come parametro e questa funzione restituisce un valore intero dove il valore intero può essere zero , positivo O negativo .
La sintassi della funzione strcmp() è riportata di seguito:
int strcmp (const char* str1, const char* str2);
Nella sintassi precedente, due parametri vengono passati come stringhe, ovvero str1 E str2 e il tipo restituito è int significa che strcmp() restituisce un valore intero.
La funzione strcmp() confronta il carattere di entrambe le stringhe. Se il primo carattere di entrambe le stringhe è lo stesso, questo processo di confronto continuerà finché tutti i caratteri non verranno confrontati o il puntatore non punterà al carattere nullo ' '.
Possibili valori restituiti dalla funzione strcmp()
Valore di ritorno | Descrizione |
---|---|
0 | Quando entrambe le stringhe sono uguali. |
<0< td> | Se il valore ASCII di un carattere della prima stringa è inferiore al valore ASCII di un carattere della seconda stringa, la funzione restituirà un valore negativo. | 0<>
>0 | Se il valore ASCII di un carattere della prima stringa è maggiore del valore ASCII di un carattere della seconda stringa, la funzione restituirà un valore positivo. |
Capiamolo attraverso un esempio.
#include #include int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array int value; // declaration of integer variable printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf('strings are same'); else printf('strings are not same'); return 0; }
Analisi del programma di cui sopra
- Abbiamo dichiarato due array di tipo char, ovvero str1 e str2. Prendiamo l'input dell'utente come stringhe.
- Confrontiamo le stringhe utilizzando il metodo strcmp() funzione, cioè strcmp(str1,str2). Questa funzione confronterà entrambe le stringhe str1 e str2. Se la funzione restituisce il valore 0 significa che entrambe le stringhe sono uguali, altrimenti le stringhe non sono uguali.
Produzione:
Confronto di stringhe senza utilizzare la funzione strcmp()
#include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf('strings are same'); else printf('strings are not same'); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=' ' &&b[i]!=' ') // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; }
Analisi del programma di cui sopra
- In precedenza, abbiamo dichiarato due array di tipo char e prendiamo l'input dell'utente come stringhe.
- Abbiamo definito una funzione compare() che prenderà le stringhe di input dell'utente come parametro e confronterà entrambe le stringhe. Se la funzione restituisce 0 significa che entrambe le stringhe sono uguali altrimenti entrambe le stringhe non sono uguali .
Produzione:
Confronto di stringhe tramite puntatori
#include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf(' Enter the second string : '); scanf('%s',str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf('strings are equal'); else printf('strings are not equal'); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=' ' && *b!=' ') // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; }
Analisi del programma di cui sopra
- Abbiamo creato due array di tipo char str1 e str2. Prendiamo l'input dell'utente come stringhe.
- Abbiamo definito una funzione stringcompare() che prenderà due puntatori di tipo char come parametro. Il puntatore 'a' contiene l'indirizzo di str1 e il puntatore 'b' contiene l'indirizzo di str2. All'interno della funzione, abbiamo creato un ciclo while che verrà eseguito finché il puntatore aob non raggiunge un carattere nullo.
Produzione: