88 votes

Comparaison de chaînes de caractères sans tenir compte de la casse en C

J'ai deux codes postaux char* que je veux comparer, en ignorant la casse. Existe-t-il une fonction permettant de faire cela ?

Ou dois-je passer en boucle chaque fois que j'utilise la fonction tolower et ensuite faire la comparaison ?

Une idée de la façon dont cette fonction réagira avec des chiffres dans la chaîne de caractères.

Merci

0 votes

Je pense que j'ai mal écrit cela, postcode n'est pas un type, juste la valeur réelle que le char* va contenir.

3 votes

Sur quelle plateforme êtes-vous ? De nombreuses plateformes disposent d'une fonction spécifique pour ce faire.

0 votes

Si vous comparez un chiffre avec une lettre, vous savez que les chaînes ne sont pas équivalentes, quelle que soit la casse.

-1voto

jaldk Points 125
int strcmpInsensitive(char* a, char* b)
{
    return strcmp(lowerCaseWord(a), lowerCaseWord(b));
}

char* lowerCaseWord(char* a)
{
    char *b=new char[strlen(a)];
    for (int i = 0; i < strlen(a); i++)
    {
        b[i] = tolower(a[i]);   
    }
    return b;
}

bonne chance

La fonction Edit-lowerCaseWord récupère une variable char* avec, et retourne la valeur en minuscules de ce char*. Par exemple "AbCdE" pour la valeur du char*, retournera "abcde".

En gros, ce qu'il fait, c'est prendre les deux variables char*, après les avoir transférées en minuscules, et utiliser la fonction strcmp sur elles.

Par exemple, si nous appelons la fonction strcmpInsensitive pour les valeurs "AbCdE" et "ABCDE", elle renverra d'abord les deux valeurs en minuscules ("abcde"), puis appliquera la fonction strcmp.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X