Nel linguaggio C, il file di intestazione contiene la libreria di stringhe standard che contiene alcune funzioni di manipolazione delle stringhe utili e comunemente utilizzate. In questo articolo vedremo come confrontare stringhe in C utilizzando la funzione strcmp().
Cos'è strcmp() in C?
C strcmp() è una funzione di libreria incorporata utilizzata per il confronto delle stringhe. Questa funzione accetta due stringhe (array di caratteri) come argomenti, confronta queste due stringhe lessicograficamente e quindi restituisce 0,1 o -1 come risultato. È definito all'interno file di intestazione con il suo prototipo come segue:
Sintassi di strcmp() in C
strcmp( first_str , second_str );>
Parametri di strcmp() in C
Questa funzione accetta due stringhe (array di caratteri) come parametri:
- first_str: la prima stringa viene presa come puntatore al carattere costante (ovvero stringa immutabile). second_str: la seconda stringa viene presa come puntatore a un carattere costante.
Nota: Il motivo per cui gli argomenti vengono presi come const char * invece che solo char * è che la funzione non può modificare la stringa e renderla applicabile anche alle stringhe costanti.
Valore restituito di strcmp() in C
La funzione strcmp() restituisce tre valori diversi dopo il confronto delle due stringhe che sono i seguenti:
1. Zero ( 0 )
Un valore uguale a zero quando entrambe le stringhe risultano identiche. Questo è, tutti i caratteri in entrambe le stringhe sono gli stessi.
2. Maggiore di zero (> 0 )
Viene restituito un valore maggiore di zero quando il primo carattere non corrispondente in first_str ha un valore ASCII maggiore rispetto al carattere corrispondente in second_str oppure possiamo anche dire che se il carattere di first_str è lessicograficamente successivo al carattere di second_str, allora viene restituito zero.
3. Minore di zero (<0)
Viene restituito un valore inferiore a zero quando il primo carattere non corrispondente in first_str ha un valore ASCII inferiore di il carattere corrispondente in second_str . Possiamo anche dire che se il carattere di first_str è lessicograficamente precedente al carattere di second_str, viene restituito zero.
Per saperne di più sui valori ASCII, fare riferimento a questo articolo – Tabella ASCII
Come utilizzare la funzione strcmp() in C
L'esempio seguente dimostra come utilizzare la funzione strcmp() in C:
C
// C Program to Demonstrate the use of strcmp() function> #include> #include> int> main()> {> >// declaring two same string> >char>* first_str =>'Geeks'>;> >char>* second_str =>'Geeks'>;> >// printing the strings> >printf>(>'First String: %s
'>, first_str);> >printf>(>'Second String: %s
'>, second_str);> >// printing the return value of the strcmp()> >printf>(>'Return value of strcmp(): %d'>,> >strcmp>(first_str, second_str));> >return> 0;> }> |
formato.stringa
>
confronto di stringhe C#
>Produzione
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Come funziona strcmp() in C?
La funzione C strcmp() funziona confrontando il file due corde lessicograficamente . Significa che confronta il valore ASCII di ciascun carattere finché non viene trovato il valore non corrispondente o viene trovato il carattere NULL. Il funzionamento della funzione C strcmp() può essere descritto come segue:
1. Si inizia confrontando i valori ASCII dei primi caratteri di entrambe le stringhe.
2. Se i primi caratteri di entrambe le stringhe sono uguali, questa funzione controllerà il secondo carattere, se sono uguali anche loro, controllerà il terzo e così via finché non viene trovato il primo carattere senza corrispondenza o il carattere NULL.
3. Se un È stato trovato il carattere NULL , la funzione restituisce zero poiché entrambe le stringhe saranno le stesse.
4. Se viene trovato un carattere non corrispondente,
- Se il valore ASCII del carattere della prima stringa è maggiore di quello della seconda stringa, allora la differenza positiva ( > 0 ) tra i rispettivi valori ASCII viene restituito.
- Se il valore ASCII del carattere della prima stringa è inferiore a quello della seconda stringa, allora la differenza negativa ( < 0 ) tra i rispettivi valori ASCII viene restituito.
Tutti e tre questi casi sono dimostrati negli esempi seguenti.
Esempi di strcmp() in C
Esempio 1. Comportamento di strcmp() per stringhe identiche
Questo programma illustra il comportamento della funzione strcmp() per stringhe identiche.
C
// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> > >char> first_str[] =>'g f g'>;> >char> second_str[] =>'g f g'>;> > >// Using strcmp()> >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>'
Value returned by strcmp() is: %d'> , res);> >return> 0;> }> |
>
>Produzione
Strings are equal Value returned by strcmp() is: 0>
Esempio 2. Comportamento di strcmp() per la prima stringa lessicograficamente maggiore
L'esempio seguente dimostra il comportamento della funzione strcmp() per la prima stringa lessicograficamente maggiore.
C
albero binario vs bst
// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// z has greater ASCII value than g> >char> first_str[] =>'zfz'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>'
Value of result: %d'> , res);> > >return> 0;> }> |
>
>Produzione
Strings are unequal Value of result: 19>
Esempio 3. Comportamento di strcmp() per la prima stringa lessicograficamente più piccola.
L'esempio seguente dimostra il comportamento della funzione strcmp() per la prima stringa lessicograficamente più piccola.
C
stringa formattata c
// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// b has less ASCII value than g> >char> first_str[] =>'bfb'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>'
Value returned by strcmp() is: %d'> , res);> > > >return> 0;> }> |
>
>Produzione
Strings are unequal Value returned by strcmp() is: -5>
Conclusione
In questo articolo abbiamo discusso di Funzione della libreria standard C strcmp() che viene utilizzato per confrontare lessicograficamente due stringhe. La libreria standard contiene alcune funzioni utili e usate di frequente che semplificano la programmazione poiché aiutano a evitare di riscrivere più e più volte la funzione comunemente utilizzata quando necessario.
Domande frequenti su strcmp() in C
1. Come possiamo confrontare due stringhe in C?
Anni: Possiamo usare la funzione strcmp() che è definita all'interno del file header per confrontare lessicograficamente due stringhe (array di caratteri).
2. Qual è il prototipo della funzione di strcmp() in C?
Anni: Il prototipo della funzione strcmp() è il seguente:
int strcmp(const char* lhs , const char* rhs );>
3. Quando la funzione strcmp() restituisce zero?
Anni: La funzione strcmp() restituisce zero quando le due stringhe sono identiche.
4. Cosa significa il valore restituito positivo dalla funzione strcmp()?
Anni: La funzione strcmp() restituisce un valore positivo quando la prima stringa è lessicograficamente maggiore della seconda stringa.
5. Cosa significa il valore restituito negativo della funzione strcmp()?
Anni: Il valore negativo restituito dalla funzione strcmp() significa che la prima stringa è lessicograficamente più piccola della seconda stringa.
6. In che modo la funzione strcmp() confronta due stringhe in C?
Anni: La funzione strcmp() confronta i valori ASCII di ciascun carattere delle due stringhe finché non viene trovato il carattere non corrispondente o il carattere NULL.
7. È possibile utilizzare la funzione strcmp() per confrontare tipi di dati non stringa in C?
Anni: No, la funzione strcmp() non può confrontare tipi di dati non stringa in C. Può solo confrontare il tipo di dati stringa mutabile o immutabile che termina con un carattere NULL.
Articoli Correlati:
- Archi in C
- Funzioni stringa comunemente utilizzate in C/C++ con esempi