2012-01-17 228 views
5

我在查找比較C字符串的信息時遇到了一些困難。我明白,與C++不同,C不支持操作符重載,所以我想知道是否有任何方法檢查一個字符串是否大於/小於另一個(例如str1> str2)?C字符串的比較運算符

非常感謝您的回覆。這是我第一次真的不得不問一個問題,因爲我找不到相關的帖子。

回答

14

有幾個,每個服務於不同的目的(現在省略寬字符變體)。

strcmp - 比較兩個字符串,逐個字符(C是什麼字符串是否相等的概念 - 不需要與人們的想法一致 - 見strcoll)。有一個變體只能比較第一個最多n個字符,strncmp

strcasecmp - 比較兩個字符串,忽略大小寫。有一個變體僅用於比較第一個最多n個字符,strncasecmp

strcoll - 比較兩個字符串,觀察當前設置的語言環境(這就是爲什麼稱爲歸類,而不是在這種情況下比較)。如果您希望ssß比較德國觀衆的平等,那麼這就是你應該使用的。


下,您可能在語言寫

if (string1 > string2) ... 

,你必須寫

if (strmp(string1, string2) > 0) ... 
在C.

基本上你兩個操作數進入函數調用,保留了比較操作而是與0進行比較。

2

使用的strcmp()的C.

例如,如果要比較兩個字符串S1和S2然後,

STRCMP(S1,S2)將返回0,如果他們是平等的,正整數,如果如果s1小於s2,則s1大於s2且爲負整數。