मेरे पास एक पॉइंटर वर्ण सरणी है
void main () {char * array [] = {[0] = "फू", [1] = "बार", [2] = "बाज़"}; (सरणी) को पढ़ने; } और strlen int पढ़ने (const char * events []) का उपयोग करके लंबाई प्राप्त करने का प्रयास करते हुए {int size_of_events; Size_of_events = (स्ट्रेलन (ईवेंट)); } यह निम्न चेतावनी को फेंकता है:
चेतावनी: पासिंग तर्क 1 में से एक ???? strlenâ ???? असंगत सूचक प्रकार [डिफ़ॉल्ट रूप से सक्षम] से फ़ाइल में test.c से शामिल है: 6: 0: /usr/include/string.hellow5:15: नोट: अपेक्षित â ???? const char * â ???? लेकिन तर्क एक प्रकार की है मैं समझ नहीं पा रहा हूं कि समस्या क्या है ..
आप पॉइन्टर सरणी पर स्ट्रिंग फ़ंक्शन का उपयोग करने का प्रयास कर रहे हैं।
में पढ़ा (जिस तरह से libc फ़ंक्शन नाम का उपयोग नहीं करते हैं) events strlen का उपयोग करते हुए const char ** एक सरणी के लिए एक संकेतक या चार * पॉइंटर के लिए है। उस पर आप अप्रत्याशित परिणाम उत्पन्न करेंगे। यदि आप भाग्यशाली हैं, तो यह आपके प्रोग्राम को सेगमेंटेशन उल्लंघन के साथ दुर्घटनाग्रस्त करेगा।
सी arrays में एक अनिश्चित रूप से आकार या लंबाई नहीं है आपको इसे अपने फ़ंक्शन पर एक अलग तर्क के रूप में देना होगा।
कारण strlen पर काम करता है char * (वर्ण सरणियों) सी में स्ट्रिंग एक विशेष नल-टर्मिनेटर प्रतीक '\ 0' द्वारा समाप्त कर दी जाती है। यह वर्णों की मात्रा को पहले '\ n' तक गिना जाता है। यह नियमित सरणियों के लिए मामला नहीं है। यदि आप संबंधित स्ट्रिंग्स की लंबाई चाहते हैं तो आप उन्हें strlen (ईवेंट [0]), स्ट्रेलन (घटनाओं [1]) के साथ प्राप्त कर सकते हैं, स्ट्रेलन (इवेंट्स [2])
No comments:
Post a Comment