CHARS-vergelijking in C

Ik probeer twee tekens te vergelijken om te zien of iemand groter is dan de andere. Om te zien of ze gelijk waren, gebruikte ik strcmp. Is er iets dat lijkt op strcmpdie ik kan gebruiken?


Antwoord 1, Autoriteit 100%

A charVariabele is eigenlijk een 8-bits integrale waarde. Het heeft waarden van 0naar 255. Dit zijn bijna altijd ASCII-codes , maar andere coderingen zijn toegestaan. 0staat voor het C-NULL-teken, en 255staat voor een leeg symbool.

Dus, wanneer u de volgende opdracht schrijft:

char a = 'a'; 

Het is hetzelfde als dit op een ASCII-systeem.

char a = 97;

U kunt dus twee charvariabelen vergelijken met behulp van de >, <, ==, <=, >=Operators:

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

Merk op dat zelfs als ASCII niet vereist is, deze functie werkt omdat C vereist dat de cijfers in opeenvolgende volgorde zijn:

int isdigit(char c) {
    if(c >= '0' && c <= '9') 
        return 1;
    return 0;
} 

Antwoord 2, Autoriteit 41%

In c Het char-type heeft een numerieke waarde, dus de & GT; Operator werkt prima bijvoorbeeld

#include <stdio.h>
main() {
    char a='z';
    char b='h';
    if ( a > b ) {
        printf("%c greater than %c\n",a,b);
    }
}

Antwoord 3, autoriteit 7%

Ik denk dat je twee strings probeert te vergelijken die waarden vertegenwoordigen, de functie die je zoekt is:

int atoi(const char *nptr);

of

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

met deze functies kun je een string converteren naar een int/long int:

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

en vergelijk het met een andere waarde.

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

Other episodes