Confronta le stringhe in C
-
Usa la funzione
strcmp
per confrontare le stringhe -
Usa la funzione
strncmp
per confrontare solo alcune parti di archi -
Usa le funzioni
strcasecmp
estrncasecmp
per confrontare le stringhe ignorando le maiuscole / minuscole
Questo articolo introdurrà più metodi su come confrontare le stringhe in C.
Usa la funzione strcmp
per confrontare le stringhe
La funzione strcmp
è la caratteristica della libreria standard definita nell’intestazione <string.h>
. Le stringhe in stile C sono solo sequenze di caratteri terminate dal simbolo \0
, quindi la funzione dovrebbe confrontare ogni carattere con l’iterazione.
strcmp
accetta due stringhe di caratteri e restituisce il numero intero per indicare il risultato del confronto. Il numero restituito è negativo se la prima stringa è lessicograficamente inferiore alla seconda stringa, o positivo se quest’ultima è minore della prima, o 0
se le due stringhe sono identiche.
Nota che, nel seguente esempio, invertiamo il valore di ritorno della funzione e lo inseriamo nell’istruzione condizionale ?:
Per stampare l’output corrispondente sulla console.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
const char* str3 = "Hello there 2";
!strcmp(str1, str2) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strcmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Produzione:
strings are not equal
strings are not equal
Usa la funzione strncmp
per confrontare solo alcune parti di archi
strncmp
è un’altra funzione utile definita nell’intestazione <string.h>
, e può essere utilizzata per confrontare solo diversi caratteri dall’inizio delle stringhe.
strncmp
accetta il terzo argomento di tipo intero per specificare il numero di caratteri da confrontare in entrambe le stringhe. I valori restituiti dalla funzione sono simili a quelli restituiti da strcmp
.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
!strncmp(str1, str2, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Produzione:
strings are equal
Usa le funzioni strcasecmp
e strncasecmp
per confrontare le stringhe ignorando le maiuscole / minuscole
La funzione strcasecmp
si comporta in modo simile alla funzione strcmp
tranne per il fatto che ignora le lettere maiuscole e minuscole. Questa funzione è conforme a POSIX e può essere utilizzata su più sistemi operativi insieme a strncasecmp
, che implementa il confronto senza distinzione tra maiuscole e minuscole su un certo numero di caratteri in entrambe le stringhe. Quest’ultimo parametro può essere passato alla funzione con il terzo argomento di tipo size_t
.
Si noti che i valori restituiti da queste funzioni possono essere utilizzati direttamente nelle istruzioni condizionali.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 2";
const char* str3 = "Hello there 2";
!strcasecmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strncasecmp(str1, str3, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Produzione:
strings are equal
strings are equal
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook