Confronta le stringhe in C

Jinku Hu 12 ottobre 2023
  1. Usa la funzione strcmp per confrontare le stringhe
  2. Usa la funzione strncmp per confrontare solo alcune parti di archi
  3. Usa le funzioni strcasecmp e strncasecmp per confrontare le stringhe ignorando le maiuscole / minuscole
Confronta le stringhe in C

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
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Articolo correlato - C String