c - Confused with the char array when scanf -


मैं एक छोटे से प्रोग्राम से भ्रमित हूं।

  #include & lt; stdio.h & gt; # परिभाषित LEN 10 int main () {char str1 [LEN] = "\ 0"; चार स्ट्रॉज़ [एलएन] = "\ 0"; Scanf ("% s", str1); Scanf ("% s", str2); Printf ("% s \ n", str1); Printf ("% s \ n", str2); वापसी 0; }   

अगर मेरा इनपुट है:

मैंगोबाटाओ
मैंगोबैटो 123456

आउटपुट क्यों होना चाहिए: < / P>

123456
mangobatao123456

और नहीं:

mangobatao
mangobatao123456

कैसे char सरणी को स्मृति में आवंटित किया गया है?

< P> ठीक है, एक 10 अक्षर char एरे फिट नहीं होगा "mangobatao" , क्योंकि इसमें 10 अक्षर हैं - शून्य टर्मिनेटर के लिए कोई जगह नहीं है इसका मतलब है कि आपने अपरिभाषित व्यवहार का कारण बना है, इसलिए कुछ भी हो सकता है।

इस मामले में, ऐसा लगता है कि आपका कंपाइलर ने str2 से पहले str1 स्मृति में, इसलिए जब आप scanf को भरने के लिए str2 पर कॉल करते हैं, तो लंबी स्ट्रिंग str1 की शुरुआत को ओवरराइट करता है यही कारण है कि आप str2 को प्रिंट करने का प्रयास करते समय आपको जो कोड की सोच रहे हैं उसका अंत देखें। यदि आप 100 की लंबाई का उपयोग करते हैं तो आपका उदाहरण ठीक काम करेगा।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

javascript - What is an alternative to using getElementByClass for hiding multiple elements? -

c# - How to store a 128 bit integer with nHibernate? -