web-dev-qa-db-fra.com

Comparaison des caractères en C

J'essaie de comparer deux caractères pour voir si l'un est plus grand que l'autre. Pour voir si elles étaient égales, j'ai utilisé strcmp. Existe-t-il quelque chose de similaire à strcmp que je puisse utiliser?

12
dclark

Une variable char est en réalité une valeur intégrale de 8 bits. Il aura les valeurs de 0 à 255. Ce sont codes ASCII . 0 représente le caractère C-null et 255 représente un symbole vide.

Alors, quand vous écrivez le devoir suivant:

char a = 'a'; 

C'est la même chose que:

char a = 97;

Vous pouvez donc comparer deux variables char à l’aide de la méthode >, <, ==, <=, >= les opérateurs:

char a = 'a';
char b = 'b';

if( a < b ) printf("%c is smaller than %c", a, b);
if( a > b ) printf("%c is smaller than %c", a, b);
if( a == b ) printf("%c is equal to %c", a, b);
17
Victor

En C, le type de caractère a une valeur numérique pour que l'opérateur> fonctionne parfaitement, par exemple

#include <stdio.h>
main() {

    char a='z';

    char b='h';

    if ( a > b ) {
        printf("%c greater than %c\n",a,b);
    }
}
8
Vorsprung

Je crois que vous essayez de comparer deux chaînes représentant des valeurs, la fonction que vous recherchez est la suivante:

int atoi(const char *nptr);

ou

long int strtol(const char *nptr, char **endptr, int base);

ces fonctions vous permettront de convertir une chaîne en int/long int:

int val = strtol("555", NULL, 10);

et le comparer à une autre valeur.

int main (int argc, char *argv[])
{
    long int val = 0;
    if (argc < 2)
    {
        fprintf(stderr, "Usage: %s number\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    val = strtol(argv[1], NULL, 10);
    printf("%d is %s than 555\n", val, val > 555 ? "bigger" : "smaller");

    return 0;
}
1
Ayman Khamouma