[英]Char Comparison in C
我正在尝试比较两个字符以查看一个是否大于另一个。 为了查看它们是否相等,我使用了strcmp
。 有什么类似于我可以使用的strcmp
的东西吗?
char
变量实际上是一个 8 位整数值。 它将具有从0
到255
值。 这些几乎都是ASCII 码,但也允许使用其他编码。 0
代表 C-null 字符, 255
代表空符号。
因此,当您编写以下作业时:
char a = 'a';
这与 ASCII 系统上的相同。
char a = 97;
因此,您可以使用>
、 <
、 ==
、 <=
、 >=
运算符比较两个char
变量:
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);
请注意,即使不需要 ASCII,此函数也会起作用,因为 C 要求数字按连续顺序排列:
int isdigit(char c) {
if(c >= '0' && c <= '9')
return 1;
return 0;
}
在 C 中,char 类型有一个数值,因此 > 运算符将正常工作,例如
#include <stdio.h>
main() {
char a='z';
char b='h';
if ( a > b ) {
printf("%c greater than %c\n",a,b);
}
}
我相信您正在尝试比较表示值的两个字符串,您正在寻找的函数是:
int atoi(const char *nptr);
或者
long int strtol(const char *nptr, char **endptr, int base);
这些函数将允许您将字符串转换为 int/long int:
int val = strtol("555", NULL, 10);
并将其与另一个值进行比较。
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;
}
您将不得不推出自己的比较角色的方式。 C 标准仅要求数字 0 到 9 具有使用基本c1 > c2
样式比较的简单方法来比较它们。 这不保证适用于其他字符,如字母。 (尽管在实践中它通常适用于简单的 ASCII 范围,如 az 和 AZ。)
一种通常不能令人满意的方法是将字符转换为字符串并使用strcoll()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.