有些时候我真的需要比较两个CHAR,而且我知道C中没有函数可以比较两个CHAR(也许我错了)因为这个我决定写一个我自己的。 该功能工作正常,但我不确定是否也可以,或者有一些问题。 如果我的功能没问题,我决定问你这个问题。 这是程序:
#include<stdio.h>
#include<string.h>
int chrcmp(const char chr1, const char chr2);
int main(void){
char firstChar = 'a';
char secondChar = 'a';
if( chrcmp( firstChar, secondChar ) == 0 ){
printf("We have a Match\n");
}else{
printf("There was no match Found.\n");
printf("%c",chrcmp(firstChar, secondChar));
}
return 0;
}
int chrcmp(const char chr1, const char chr2){
size_t lenght1, lenght2;
char s1[2] = {chr1 , '\0'}; /* Convert chr1 to string */
char s2[2] = {chr2 , '\0'}; /* Convert chr2 to string */
lenght1 = strlen(s1); /* Store lenght of first String */
lenght2 = strlen(s2); /* Store lenght of second String */
if( lenght1 == 1 && lenght2 == 1){ /* Checking if both strings have the same size (1) */
if( strcmp(s1,s2) == 0 ){ /* Compare both strings */
return 0; /* Match Found! */
}else{
return 1; /*No Match!;*/
}
}else{
return 1; /*To many chars Found!;*/
}
}
如果有问题,或者我做错了什么我没有想法。
答案 0 :(得分:3)
嗯...
这样做:
char a = 'y';
char b = 'x';
if( a == b ) printf("Chars equal");
C(和C衍生物)中的char
类型实际上是一个整数类型,并且具有为其定义的全套整数比较运算符:&lt;,&gt;,==,!=,&lt; = ,&gt; =除了按位&amp;,|和〜运算符。
答案 1 :(得分:3)
据我所知,C中没有功能来比较你的CHARs
这是不正确的。有等于运算符==
(以及所有其他比较运算符):
if (firstChar == secondChar) {
/* chars are equal */
}
答案 2 :(得分:1)
在C中,.table { display: table; }
.row { display: table-row; border-bottom-style: solid; border-width: thick; }
.cell { display: table-cell; vertical-align: middle; padding: 0 10px 0 10px;}
实际上是整数类型。对于算术运算,它被提升为char
,因此您可以使用常规整数比较。
请注意,int
是已签名还是未签名是实施定义,因此为了确保您始终使用char
或signed char
(推荐),除了测试平等之外,你对字符进行算术(包括比较)。
你不能做的是比较两个char 数组,例如
unsigned char
为此,您需要char ch[] = "Hello";
if ( ch == "Hello" )
...
或strncmp()
。只有当你绝对确保两个字符串都被正确终止时才使用后者!