एनएलएल-टर्मिनेशन सी में स्ट्रिंग (एक पूर्ण-समाप्ति वाले चार-सरणी) से एक चार सरणी को अलग करता है। अधिकांश स्ट्रिंग-मैनिपुलेटिंग फ़ंक्शन स्ट्रिंग समाप्त होने पर जानने के लिए NULL पर निर्भर करता है (और इसका काम पूरा हो जाता है), और सरल चार-सरणी के साथ काम नहीं करेगा (उदाहरण के लिए। वे सरणी की सीमाओं के पीछे काम करना जारी रखेंगे, और तब तक जारी रखें जब तक कि यह स्मृति में कहीं नल न हो - अक्सर स्मृति को दूषित करता है)।
सी में, 0 (पूर्णांक मान) को बूलियन फाल्स माना जाता है - अन्य सभी मानों को सत्य माना जाता है। , और के लिए 0 (FALSE) या गैर-शून्य (TRUE) का उपयोग करता है ताकि शाखा या कैसे लूप को रोक दिया जा सके। char एक पूर्णांक प्रकार है, एक पूर्ण-वर्ण (\ 0) वास्तव में और केवल दशमलव पूर्णांक मान 0 - यानी वाला एक char है। असत्य। यह तारों को छेड़छाड़ करने या प्रतिलिपि बनाने जैसी चीजों के लिए कार्यों को बनाने में बहुत आसान बनाता है, क्योंकि जब तक वह जिस चरित्र पर काम कर रहा है वह सुरक्षित रूप से लूप कर सकता है, तब तक शून्य-शून्य (यानी सत्य) होता है और जब यह नल-कैरेक्टर (यानी। गलत) - क्योंकि यह स्ट्रिंग के अंत को दर्शाता है। यह बहुत सरल लूप बनाता है, क्योंकि हमें इसकी तुलना करने की आवश्यकता नहीं है, हमें केवल यह जानने की जरूरत है कि यह 0 (गलत) है या नहीं (TRUE)।
उदाहरण:
char source[]="Test"; // Actually: T e s t \0 ('\0' is the NULL-character)
char dest[8];
int i=0;
char curr;
do {
curr = source[i];
dest[i] = curr;
i++;
} while(curr); //Will loop as long as condition is TRUE, ie. non-zero, all chars but NULL.
स्रोत
2013-06-08 02:55:26
क्योंकि एक अशक्त स्वयं स्ट्रिंग कई बाइट्स ले सकता है के साथ स्ट्रिंग की लंबाई भंडारण जबकि एक बाइट लेता है,। दिन में मेमोरी बहुत कम थी, इसलिए छोटा समाधान जीता। – dlev
अब मैं यही देख रहा हूं। –
यहां एक विकिपीडिया लेख है जो आपको ऐतिहासिक पृष्ठभूमि देता है: http://en.wikipedia.org/wiki/Null-terminated_string – xxbbcc