Strcmp pointeur de entier sans transtypage

J’essaie de comparer deux caractères et de voir lequel est lexicographique le plus long. Le problème est que je ne sais pas comment comparer un seul caractère.

struct example { char code; } if (strcmp(i->code, j->code) < 0) return 1; 

avertissement: passer l’argument 1 de âstrcmpâ rend le pointeur d’entier sans transt

warning: passer l’argument 2 de âstrcmpâ rend le pointeur d’entier sans transt

Je sais que strcmp est destiné aux chaînes, devrais-je simplement malloc et transformer le code de caractères en chaîne, ou existe-t-il un autre moyen de comparer des caractères uniques?

    char est un type entier.

    Vous comparez les objects char à l’aide des opérateurs relationnels et d’égalité ( < , == , etc.).

    strcmp() prend une chaîne terminée par un zéro , donc en C un caractère char * . Vous lui transmettez un seul caractère, un caractère. Ce caractère est automatiquement promu en tant int dans l’expression (cela se produit toujours avec des caractères dans des expressions en C), puis il est tenté de changer en caractère char* Dieu merci, cela échoue.

    Utilisez ceci à la place:

     if (i->code < j->code) 

    Puisque vous comparez des caractères et non des chaînes terminées par null, procédez comme suit:

     if (i->code < j->code) 

    Essayer

     if (i->code < j->code) ...