fgets()
समारोह जब एक नई पंक्ति चरित्र (जब stdin
का उपयोग कर कुंजी दर्ज करें) का सामना करना पड़ा है इनपुट स्वीकार करता है, और न्यू लाइन चरित्र \n
समारोह द्वारा मान्य वर्ण माना जाता है और स्ट्रिंग अपने str2
में कॉपी किया में शामिल है। इसलिए जब आप इसे strlen()
पर पैरामीटर के रूप में पास करते हैं तो यह अतिरिक्त \n
वर्ण के लिए आपकी स्ट्रिंग में वर्णों की मूल संख्या से अधिक एक देता है।
आप वर्णों की मूल संख्या चाहते हैं या एक \n
gets()
फ़ंक्शन का उपयोग के रूप में यह नकल नहीं करता है न्यू लाइन आगे character.And, जोड़े जाने के लिए नहीं करना चाहते हैं, तो आप केवल तर्क के रूप में स्ट्रिंग पारित करने के लिए की जरूरत है gets()
के लिए डिफ़ॉल्ट स्ट्रीम के रूप में stdin
के लिए स्ट्रीम (stdin
) पास करने की आवश्यकता नहीं है।
char str2[100];
printf("\nEnter a string: ");
gets(str2);
printf("\n%d",strlen(str2));
स्रोत
2013-05-01 08:42:35
यह शायद गिनती है '\ n' बजाय' \ 0' –
तो क्या स्ट्रिंग आप में प्रवेश किया था, और परिणाम क्या था? –
[fgets() के संभावित डुप्लिकेट अंत में नई लाइन जोड़ता है] (http://stackoverflow.com/questions/13443793/fgets-adds-newline-at-the-end) –