Ik probeer twee tekens te vergelijken om te zien of de ene groter is dan de andere. Om te zien of ze gelijk waren, gebruikte ik strcmp
. Is er iets dat lijkt op strcmp
dat ik kan gebruiken?
Antwoord 1, autoriteit 100%
Een char
variabele is eigenlijk een 8-bits integrale waarde. Het heeft waarden van 0
tot 255
. Dit zijn bijna altijd ASCII-codes, maar andere coderingen zijn toegestaan. 0
staat voor het C-null-teken en 255
staat voor een leeg symbool.
Dus, als je de volgende opdracht schrijft:
char a = 'a';
Het is hetzelfde als dit op een ASCII-systeem.
char a = 97;
Je kunt dus twee char
-variabelen vergelijken met de >
, <
, ==
, <=
, >=
operatoren:
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 staan:
int isdigit(char c) {
if(c >= '0' && c <= '9')
return 1;
return 0;
}
Antwoord 2, autoriteit 41%
In C heeft het char-type een numerieke waarde, dus de > operator werkt bijvoorbeeld prima
#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;
}