I'm trying to compare two chars to see if one is greater than the other. To see if they were equal, I used strcmp. Is there anything similar to strcmp that I can use?
3 Answers
A char variable is actually an 8-bit integral value. It will have values from 0 to 255. These are almost always ASCII codes, but other encodings are allowed. 0 stands for the C-null character, and 255 stands for an empty symbol.
So, when you write the following assignment:
char a = 'a'; It is the same thing as this on an ASCII system.
char a = 97; So, you can compare two char variables using the >, <, ==, <=, >= 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); Note that even if ASCII is not required, this function will work because C requires that the digits are in consecutive order:
int isdigit(char c) { if(c >= '0' && c <= '9') return 1; return 0; } 5In C the char type has a numeric value so the > operator will work just fine for example
#include <stdio.h> main() { char a='z'; char b='h'; if ( a > b ) { printf("%c greater than %c\n",a,b); } } 2I believe you are trying to compare two strings representing values, the function you are looking for is:
int atoi(const char *nptr); or
long int strtol(const char *nptr, char **endptr, int base); these functions will allow you to convert a string to an int/long int:
int val = strtol("555", NULL, 10); and compare it to another value.
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; }