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 strcmp
die ik kan gebruiken?
Antwoord 1, Autoriteit 100%
A char
Variabele is eigenlijk een 8-bits integrale waarde. Het heeft waarden van 0
naar 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, 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 char
variabelen 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;
}