2015-06-14 97 views
0

有些時候,我真的需要比較兩個CHAR,並從我所知道的是沒有函數在C來比較兩個CHAR(也許我錯了),因爲這個,我決定寫一個我自己的。 該功能工作正常,但我不知道如果還行,或者有一些問題。 我決定問你關於這個,如果我的功能沒問題。 下面是程序:Char比較功能在C

#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!;*/ 
    } 
} 

如果有一些問題,或者如果我做錯了什麼我沒有ideeas。

+0

與你的問題沒有關係,實際上是一個挑剔的問題,但這個詞是「長度」,而不是「長度」。 – szczurcio

+0

英語不是我自己的語言,但我認爲你已經注意到了, – Michi

+0

是的,我沒有試圖批評你,或者讓你感覺不好,只是一個友好的筆記,所以你知道未來的正確拼寫:) – szczurcio

回答

1

在C中,char實際上是一個整數類型。對於算術運算,將其提升爲int,因此您可以使用正常的整數比較。

注意是否char帶符號是實現定義,所以要確保,你應該總是比測試平等的其他字符使用signed charunsigned char(推薦)如果你做算術(包括比較)。

你不能做的是比較兩個字符數組,如

char ch[] = "Hello"; 
if (ch == "Hello") 
    ... 

對於您需要strncmp()strcmp()。只有當你是絕對確保兩個字符串正確終止!

3

嗯...

只是這樣做:

char a = 'y'; 
char b = 'x'; 
if(a == b) printf("Chars equal"); 

char類型C(和C衍生物)實際上是整數類型,並具有全套爲它定義整數比較運算符:<,>,==,!=,< =,> =除了按位&,|和〜運算符。

3

從我知道有C中沒有功能比較thow煤焦

這是不正確。有相等運算符==(以及所有其他的比較運算符):

if (firstChar == secondChar) { 
    /* chars are equal */ 
} 
+0

我知道它,我確實使用它,但在比較兩個使用==的CHAR中,這是錯誤的。 – Michi

+1

@Michi你是怎麼想的?除非通過「比較」,否則你的意思與平等比較不同。 – juanchopanza

+0

我做了一個開關菜單,我不得不要求用戶Y或N,我不確定是否可以使用「==」比較兩個字符。在這種情況下,我不知道CHARS被解釋爲整數。所以我決定讓事情複雜化......我想。 – Michi