2014-03-29 43 views
6

我試圖比較兩個字符,看看是否比另一個更大。要看他們是否相等,我用strcmp。有什麼類似於我可以使用的strcmpC中的字符比較

+5

'=='和'>'怎麼樣? –

+0

當您按照克雷克的建議,請記住使用'unsigned char'。 – Deduplicator

+1

Kerrek的評論是答案,除非你有一些你沒有提到的更詳細的細節。嘗試在這種情況下舉個例子。 – ThoAppelsin

回答

6

在C char類型具有數字值,因此>運算符將工作得很好例如

#include <stdio.h> 
main() { 

    char a='z'; 

    char b='h'; 

    if (a > b) { 
     printf("%c greater than %c\n",a,b); 

    } 
    } 
+0

真的,那麼這是否意味着一個

+0

@AndrewPaulSimmons「一」 ascii碼十進制97不小於「B」的ASCII碼的十進制66.少如果需要則區分大小寫的比較上的兩個參數使用的tolower() – Vorsprung

6

char變量實際上是8位的整數值。它的值將從0255。這些是ASCII codes0代表C空字符,而255代表空符號。

所以,當你寫了以下任務:

char a = 'a'; 

這是同樣的事情:

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); 
+0

這個問題被標記有C. – ThoAppelsin

+3

很抱歉的NIT: 「0代表NULL」?可能是ASCII NUL或C空字符,但不是「NULL」。 – chux

+0

我很抱歉。我的錯! – Victor

1

我相信你正在試圖比較兩個字符串代表值,您正在尋找的功能是:

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; 
}