c - warning:gets function is dangerous -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 10 जवाब

जब मैं उपयोग करता है समारोह, जीसीसी मुझे एक चेतावनी देती है:

  चेतावनी: `हो जाता है 'फ़ंक्शन खतरनाक है और इसका उपयोग नहीं किया जाना चाहिए।  

क्यों और खतरनाक फ़ंक्शन डालता है?

यदि आपके पास है कोड इस प्रकार है:

<पूर्व> char s [10]; हो जाता है (एस);

और जब आप कार्यक्रम चलाते हैं तो आप 10 से अधिक वर्णों में टाइप करते हैं, तो आप बफर को ओवरफ्लो करेंगे, जिसके कारण अपरिभाषित व्यवहार होगा। हो जाता है () फ़ंक्शन में आपको अक्षर टाइप करने से रोकने का कोई मतलब नहीं है और इसलिए इसे टाला जाना चाहिए। इसके बजाय आपको fgets () का उपयोग करना चाहिए, जो आपको पढ़ने वाले पात्रों की संख्या को सीमित करने की अनुमति देता है, ताकि बफर अतिप्रवाह न हो।

  chars [10]; फास्ट्स (एस, 10, स्टडिन);  

डालता () फ़ंक्शन पूरी तरह से सुरक्षित है, प्रदान की जिस स्ट्रिंग को आप आउटपुट कर रहे हैं वह निरर्थक है।


Comments