char *

2012-08-12 14 views
5

में शून्य टर्मिनिंग वर्ण की जांच करें, मैं बस यह देखने की कोशिश कर रहा था कि char * सरणी में शून्य समाप्ति चरित्र को कैसे जांचें, लेकिन मैं असफल रहा। मुझे for लूप प्रक्रिया का उपयोग करके लंबाई मिल सकती है, जहां आप प्रत्येक तत्व की जांच करते रहते हैं, लेकिन मैं केवल while लूप का उपयोग करना चाहता हूं और शून्य टर्मिनिंग स्ट्रिंग ढूंढना चाहता हूं। मैं कभी भी while पाश से बाहर निकलने के लिए प्रतीत नहीं होता। ऐसा कोई कारण क्यों है?char *

char* forward = "What is up"; 
int forward_length = 0; 
while (*(forward++)!='/0') { 
    forward_length++; 
    printf("Character %d", forward_length); 
} 
+12

क्या आपको बहु-चरित्र निरंतरता के बारे में चेतावनी मिली? आप गलत स्लैश का उपयोग कर रहे हैं '' 0 ''' '0/0'' – Musa

+0

आगे की तरफ की घोषणा करें क्योंकि रजिस्टर क्लास कभी-कभी उपयोगी भी हो सकती है। – Ram

उत्तर

23

आप '/0' बजाय '\0' इस्तेमाल किया है। यह गलत है: '\0' एक शून्य वर्ण है, जबकि '/0' एक मल्टीचार्टर शाब्दिक है।

इसके अलावा, सी में यह अपनी हालत में एक शून्य छोड़ करने के लिए ठीक है:

while (*(forward++)) { 
    ... 
} 

शून्य होने के लिए चरित्र, पूर्णांक, सूचक, आदि की जांच करने के लिए एक वैध तरीका है।

14

शून्य चरित्र '\0' है, '/0' नहीं।

while (*(forward++) != '\0') 
6

आपका '/0' स्लेश '\0' होना चाहिए .. आप मिल गया उलट/गलत तरीके से झुकाव। आपका while दिखना चाहिए:

while (*(forward++)!='\0') 

हालांकि आपके अभिव्यक्ति की != '\0' हिस्सा यहाँ वैकल्पिक है के बाद से पाश जब तक यह करने के लिए मूल्यांकन करता है जारी रहेगा गैर शून्य (शून्य शून्य माना जाता है और लूप समाप्त होगा) ।

सभी "विशेष" वर्ण (जैसे, बिना प्रिंट करने योग्य पात्रों के लिए escape sequences) एक पिछड़े स्लेश, इस तरह के टैब '\t', या न्यू लाइन '\n', और अशक्त '\0' के लिए एक ही रूप में तो यह याद रखने में आसान का उपयोग करें।

6

इसे पूरा करने के लिए: जबकि अन्य ने अब आपकी समस्या हल की है :) मैं आपको अच्छी सलाह का एक टुकड़ा देना चाहता हूं: पहिया को पुन: पेश न करें।

size_t forward_length = strlen(forward); 
+0

इस size_t तर्क का उपयोग कैसे करें? – vkaul11

+0

@ vkaul11 "इस आकार_t तर्क का उपयोग करके" आपका क्या मतलब है? –

+0

@ H2CO3 क्षमा करें, लेकिन पूर्वनिर्धारित कार्यों के लिए कोड लिखना हमेशा अच्छा अभ्यास है –

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