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?
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);
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);
}
}
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;
}