C中的字符比较功能

时间:2015-06-14 20:02:54

标签: c

有些时候我真的需要比较两个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!;*/
    }
}

如果有问题,或者我做错了什么我没有想法。

3 个答案:

答案 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是已签名还是未签名是实施定义,因此为了确保您始终使用charsigned char(推荐),除了测试平等之外,你对字符进行算术(包括比较)。

你不能做的是比较两个char 数组,例如

unsigned char

为此,您需要char ch[] = "Hello"; if ( ch == "Hello" ) ... strncmp()。只有当你绝对确保两个字符串都被正确终止时才使用后者!