2012-12-02 26 views
8

मुझे यह पता लगाने की ज़रूरत है कि कोई char सरणी "ADD" से शुरू होती है या नहीं। मुझे strcmp() का उपयोग करना है, लेकिन मुझे नहीं पता कि पहले तीन अक्षर कैसे प्राप्त करें। मैं वास्तव में सी-तारों के साथ काम करने से नफरत करता हूं। मैं char buffer[1024]?मैं सी में स्ट्रिंग कैसे लगा सकता हूं?

उत्तर

9

strncmp("ADD", buffer, 3) का उपयोग करके चार सरणी का एक टुकड़ा कैसे ले सकता हूं।

मुझे यकीन नहीं है कि आप "टुकड़ा" से क्या मतलब रखते हैं लेकिन buffer के अंदर कोई भी पॉइंटर एक टुकड़ा माना जा सकता है। उदाहरण के लिए यदि buffer एक स्ट्रिंग है जो "ADD" से शुरू होती है तो char *slice = buffer + 3"ADD" हटाकर एक ही स्ट्रिंग है। नोट कि slice तब buffer का हिस्सा है और slice की सामग्री को संशोधित करने से buffer की सामग्री संशोधित होगी। और दूसरी तरफ दौर।

यदि "स्लाइस" से आप एक स्वतंत्र प्रतिलिपि का मतलब रखते हैं तो आपको एक नया मेमोरी ब्लॉक आवंटित करना होगा और रोचक भागों को buffer से अपनी याददाश्त में कॉपी करना होगा। लाइब्रेरी फ़ंक्शन strdup और strndup इसके लिए आसान हैं।

+0

कैसे एक एक ऑफसेट और एक अंत है कि मूल चार अनुक्रम तुलना में कम है निर्दिष्ट कर सकते है? "हैलो" + 1 आकार 3 की तरह (इसलिए "ell"); मेरा मतलब है स्लाइस द्वारा मेरा मतलब है। सौभाग्य से strncmp और printf ऑफर विकल्प इसके साथ काम करने के लिए, लेकिन यह एक चार अनुक्रम – scape

+0

@scape देखें [सी में स्ट्रिंग से एक सबस्ट्रिंग निकालने के लिए कैसे करें] के रूप में इसे दिखाने के लिए साफ होगा ... https://stackoverflow.com/questions/1 9 5555434) – kmkaplan

+0

"स्ट्रोक आमतौर पर '\ 0' के साथ डिलीमीटर को प्रतिस्थापित करता है क्योंकि यह इनपुट" खाता "करता है।" जो स्पष्ट रूप से कुछ कमियां हैं। – scape

8

उपयोग strncmp .Assuming बफर चर परीक्षण करने के लिए, बस

strncmp (buffer,"ADD",3);