<String.h> और <strings.h> के बीच अंतर


90

मैंने देखा कि कम से कम (मैक ओएस एक्स पर) एक <string.h>हेडर और एक <strings.h>हेडर दोनों था । man 3 stringयह बताता है कि उनमें विभिन्न कार्य हैं। इस के लिए कोई कारण है?


2
इसके लायक क्या है, OS X strings.hमें अमानक कार्य शामिल हैं bcmp bcopy bzero ffs index rindex strcasecmp strncasecmp... और यह बात है।
पोटाटोस्वाटर

3
@Potatoswatter: यह वही कर रहा है जो POSIX द्वारा निर्दिष्ट है।
आर .. गिटहब स्टॉप हेल्पिंग ICE

जवाबों:


114

strings.h यूनिक्स विकास में बीएसडी शाखा से आता है। इसकी सामग्री को POSIX द्वारा मानकीकृत किया गया है, लेकिन इसमें से अधिकांश को विरासत के रूप में चिह्नित किया गया है और इसे अन्य कार्यों के साथ आसानी से बदला जा सकता है:

int    bcmp(const void *, const void *, size_t); /* LEGACY, see memcmp */
void   bcopy(const void *, void *, size_t); /* LEGACY, see memcpy, memmove */
void   bzero(void *, size_t); /* LEGACY, see memset */
int    ffs(int);
char  *index(const char *, int); /* LEGACY, see strchr */
char  *rindex(const char *, int); /* LEGACY, see strrchr */
int    strcasecmp(const char *, const char *);
int    strncasecmp(const char *, const char *, size_t);

4
कुछ सी मानक पुस्तकालयों की गैर पदावनत कार्यों विलय कर दिया है strings.hमें string.h। देखें, जैसे, Glibc
एंट्रोपो

19

आमतौर पर <strings.h>बस मानक हेडर में कुछ उपयोगी लेकिन गैर-मानक अतिरिक्त स्ट्रिंग फ़ंक्शन जोड़ता है <string.h>। अधिकतम पोर्टेबिलिटी के लिए आपको केवल उपयोग करना चाहिए <string.h>लेकिन यदि आपको <strings.h>पोर्टेबिलिटी की आवश्यकता से अधिक कार्यों की आवश्यकता है तो आप <strings.h>इसके बजाय उपयोग कर सकते हैं <string.h>


1
मैं "उपयोगी" के रूप में इन कार्यों के विवरण पर सवाल उठाऊंगा। उनमें से ज्यादातर बदसूरत बीएसडी हैं मानक एएनएसआई / आईएसओ सी कार्यों के विभिन्न नामों के साथ डुप्लिकेट। बाइट स्ट्रिंग्स के लिए केस-असंवेदनशील तुलना कार्य (क्रॉस-प्लेटफॉर्म विश्वसनीयता समझ में) शायद आधुनिक यूटीएफ -8 स्ट्रिंग्स पर उपयोगी नहीं हैं, और यहां तक ​​कि अगर वे "काम" करते हैं, तो वे संभवतः प्रोग्रामर को प्रोग्रामर नहीं प्रदान करते हैं। केवल ffsसंभवतः उपयोगी है।
R .. गिटहब स्टॉप हेल्पिंग ICE

4
@R .: वे उपयोगी हैं यदि आपके पास इन कार्यों का उपयोग करने के लिए संकलित बीएसडी कोड है। ;-)
पॉल आर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.