1 00:00:00,000 --> 00:00:00,180 2 00:00:00,180 --> 00:00:02,920 >> स्पीकर 1: चलो एक प्रोग्राम लिखने करते हैं कि बिना उपयोगकर्ता से एक स्ट्रिंग हो जाता है 3 00:00:02,920 --> 00:00:05,700 CS50 लाइब्रेरी का उपयोग GetString कार्य करते हैं. 4 00:00:05,700 --> 00:00:08,720 ऐसा करने के लिए, हम आगे जाना है और उपयोग करेंगे scanf, समारोह कि GetString 5 00:00:08,720 --> 00:00:10,950 समारोह वास्तव में उपयोग करता है हुड के नीचे. 6 00:00:10,950 --> 00:00:13,780 लेकिन मैं जानबूझ कर ऐसा करने के लिए जा रहा हूँ एक छोटी गाड़ी रास्ते में. 7 00:00:13,780 --> 00:00:17,230 मैं मुझे लगता है कि एक तरह से करने के लिए जा रहा हूँ सही हो, लेकिन यह पता चला है कि 8 00:00:17,230 --> 00:00:19,380 मेरी धारणा जा रहा है काफी, काफी त्रुटिपूर्ण हो. 9 00:00:19,380 --> 00:00:20,800 और वास्तव में, काफी खतरनाक है. 10 00:00:20,800 --> 00:00:24,750 क्योंकि मैं हूँ के बारे में एक तरह के कीड़े विरोधियों द्वारा शोषण किया जा सकता बनाने 11 00:00:24,750 --> 00:00:28,870 ऐसी है कि आपकी मशीन या आपकी कार्यक्रम संभवतः अधिक लिया जा सकता है. 12 00:00:28,870 --> 00:00:30,200 >> इस प्रकार के रूप चलो शुरू करें. 13 00:00:30,200 --> 00:00:33,540 पहले हम हमारे स्ट्रिंग की घोषणा करते हैं, अन्यथा, एक चार सितारा के रूप में अब जाना जाता है 14 00:00:33,540 --> 00:00:34,750 और यह बात कहते हैं. 15 00:00:34,750 --> 00:00:39,400 अगले एक स्ट्रिंग के लिए उपयोगकर्ता का संकेत देता है, "कृपया स्ट्रिंग." के साथ के रूप में और 16 00:00:39,400 --> 00:00:44,250 चलो अब उपयोगकर्ता से स्ट्रिंग मिलता है गंदें शब्द बोलना बोली, "% s.", scanf का उपयोग में 17 00:00:44,250 --> 00:00:47,760 दूसरे शब्दों में, चलो कि हम scanf सूचित वास्तव में एक स्ट्रिंग प्राप्त करने की उम्मीद है 18 00:00:47,760 --> 00:00:48,630 उपयोगकर्ता से. 19 00:00:48,630 --> 00:00:50,810 >> लेकिन अब हम scanf बताने की जरूरत एक दूसरी बात - 20 00:00:50,810 --> 00:00:53,350 स्ट्रिंग डाल करने के लिए जहां कि उपयोगकर्ता प्रदान करता है. 21 00:00:53,350 --> 00:00:57,840 खैर, मैं बहुत आसानी से शुरू करने जा रहा हूँ अल्पविराम है, मैं चाहता हूँ कि निर्दिष्ट के साथ 22 00:00:57,840 --> 00:00:59,320 scanf वहाँ स्ट्रिंग डाल दिया. 23 00:00:59,320 --> 00:01:04,818 मैं अगले कुछ बाहर मुद्रित करने के लिए जा रहा हूँ % s के लिए printf "धन्यवाद की तरह 24 00:01:04,818 --> 00:01:10,670 बैकस्लैश n अल्पविराम. "और हमेशा की तरह, मैं हूँ स्ट्रिंग, एस में पारित करने के लिए जा रहा है. 25 00:01:10,670 --> 00:01:14,920 अब, चलो बचाने संकलन, और इस दौड़ हम प्रेरित नहीं कर सकते हैं अगर कार्यक्रम, और देखो 26 00:01:14,920 --> 00:01:16,590 समस्या मैं भविष्यवाणी की. 27 00:01:16,590 --> 00:01:18,650 >> Scanf -1 बनाओ. 28 00:01:18,650 --> 00:01:20,960 ./scanf-1. 29 00:01:20,960 --> 00:01:21,830 स्ट्रिंग कृपया. 30 00:01:21,830 --> 00:01:25,540 की तरह कुछ प्रदान करते हैं "नमस्ते." "अशक्त के लिए धन्यवाद." हम्म, कि नहीं है 31 00:01:25,540 --> 00:01:26,750 मैं उम्मीद कर रहा था क्या. 32 00:01:26,750 --> 00:01:28,240 तो यहाँ क्या हो रहा है? 33 00:01:28,240 --> 00:01:32,040 >> हम घोषित ठीक है, क्योंकि यह पता चला है एक चार सितारा के रूप में लेकिन हम नहीं 34 00:01:32,040 --> 00:01:36,120 वास्तव में एक का पता है में संग्रहित स्मृति का वास्तविक हिस्सा, scanf नहीं किया 35 00:01:36,120 --> 00:01:38,940 स्ट्रिंग डालने के लिए कहीं भी है कि अंदर टाइप किया उपयोगकर्ता 36 00:01:38,940 --> 00:01:42,510 दरअसल, उपयोगकर्ता थे, तो अब में टाइप करने के लिए "नमस्ते" से एक बहुत लंबे समय तक स्ट्रिंग 37 00:01:42,510 --> 00:01:46,780 उदाहरण के लिए कई पाठ की पंक्तियों या पाठ के कई अनुच्छेदों, यह काफी है 38 00:01:46,780 --> 00:01:50,280 हम उत्पन्न हो सकता है कि संभव है एक विभाजन दोष तथाकथित. 39 00:01:50,280 --> 00:01:53,570 >> Scanf पता करने के लिए नहीं जा रहा है क्योंकि कि मैं वास्तव में एक पता नहीं डाल दिया है 40 00:01:53,570 --> 00:01:54,610 एस के अंदर. 41 00:01:54,610 --> 00:01:58,000 दरअसल, यह कुछ मूल्य को देखने के लिए जा रहा है एस में, के कुछ पैटर्न बिट्स कि हो सकता है 42 00:01:58,000 --> 00:02:00,910 बहुत अच्छी तरह से एक कचरा मूल्य हो, वहाँ सिर्फ संयोग से. 43 00:02:00,910 --> 00:02:04,600 और scanf अभी भी लिखने की कोशिश करने जा रहा है उस पते पर उपयोगकर्ता स्ट्रिंग, 44 00:02:04,600 --> 00:02:08,789 यह एक कचरा मूल्य है, भले ही जो वास्तव में एक दुर्घटना के लिए प्रेरित कर सकता है. 45 00:02:08,789 --> 00:02:10,130 >> तो हम कैसे इसे ठीक करने के लिए जा रहे हैं? 46 00:02:10,130 --> 00:02:12,523