2012-01-17 17 views
5

मुझे सी स्ट्रिंग की तुलना करने की जानकारी ढूंढने में कुछ कठिनाई हो रही है। मैं समझता हूं कि सी ++ के विपरीत, सी ऑपरेटर ओवरलोडिंग का समर्थन नहीं करता है, इसलिए मुझे आश्चर्य है कि क्या कोई स्ट्रिंग जांचने का कोई तरीका है कि एक स्ट्रिंग किसी अन्य से अधिक/कम है (उदा। Str1> str2)?सी स्ट्रिंग्स के लिए तुलना ऑपरेटर

आपके प्रतिक्रियाओं के लिए समय से पहले धन्यवाद। यह ईमानदारी से पहली बार है जब मुझे वास्तव में एक प्रश्न पूछना पड़ा क्योंकि मुझे कोई संबंधित पोस्ट नहीं मिला।

उत्तर

14

कई हैं, प्रत्येक अलग-अलग उद्देश्यों को पूरा करते हैं (अब के लिए विस्तृत चरित्र प्रकारों को छोड़कर)।

strcmp - दो तार, चरित्र से (strcoll देखते हैं - - उस के साथ मनुष्य कैसे लगता है मेल खाना की जरूरत नहीं है सी धारणा क्या के तार के बराबर या नहीं कर रहे हैं) के साथ चरित्र है। सबसे पहले एन वर्णों, strncmp पर पहले की तुलना करने के लिए एक संस्करण है।

strcasecmp - मामले को अनदेखा करते हुए दो तारों की तुलना करता है। सबसे पहले एन वर्णों, strncasecmp पर पहले की तुलना करने के लिए एक संस्करण है।

strcoll - वर्तमान में सेट लोकेल का निरीक्षण करते हुए दो तारों की तुलना करता है (यही कारण है कि इसे इस मामले में तुलना नहीं किया जाता है)। यदि आप जर्मन दर्शकों के बराबर तुलना करने के लिए ss और ß चाहते हैं, तो यही वह है जो आपको उपयोग करना चाहिए।


कहाँ आप एक भाषा में

if (string1 > string2) ... 

लिख सकते हैं, तो आप,

if (strmp(string1, string2) > 0) ... 
सी में

लिखने के लिए अनिवार्य रूप से आप समारोह कॉल में दोनों ऑपरेंड को स्थानांतरित तुलना ऑपरेटर को बनाए रखने की है और इसके बजाय 0 के साथ तुलना करें।

2

उपयोग strcmp() सी

उदाहरण के लिए

अगर आप दो तार एस 1 और s2 तो तुलना करना चाहते हैं,

strcmp अगर वे, सकारात्मक पूर्णांक अगर बराबर हैं (S1, S2) 0 वापस आ जाएगी में एस 1 एस 2 से अधिक है और ऋणात्मक पूर्णांक अगर एस 1 एस 2 से कम है।

संबंधित मुद्दे