आज की वीडियो में हम यार C लांगवेज का लास्ट लेक्चर करने वाले हैं और पहले से यार आप से माफ़ी क्योंकि मेरा तोड़ी सी तबित इतनी ठीक नहीं है। अब यार C लांगवेज की जो हमारी सीरीज है अलड़ी मैं 10-11 लेक्चर बना चुका हूँ और complete कर दी थी मैंने अगर मैं practical use बताओं इसका in terms of your semester exams and in terms of your placement। चोटे टॉपिक्स है जो अलग-अलग कॉलेजिस में आर अलग-अलग तरीके से आते हैं जैसे कुछ कॉलेजिस में सी लैंग्वेज में डाटा स्ट्रक्चर भी स्पेसिफिकली सी लैंग्वेज का यूज करके मेरे कॉलेज में डाटा स्ट्रक्चर था इनरिस्पेक् इसका काम नहीं होता है लेकिन फिर भी थोड़ा बहुत एक आदम आपको समझा दूंगा प्री प्रोसेसर इसकी भी आर कई बार डेफिनेशन पूछ लेते थे फिर आपको जानना जरूरी होता है अब यह सारी चीजें अगर आप अपनी जो भी कॉलेज किताब आपको वह करत यूज़फुल रहने वाला है तो शुरू करते हैं आज के इस लेक्चर को यहां पर हम चार चीजें पढ़ेंगे प्री प्रोसेसर स्विच केस फाइल हैंडलिंग और डीएम ए ठीक है डाइनेमिक मेमोरी अलोकेशन स्टार्ट करते सबसे पहले तो यार प्रोसेसर से अभी तक मैं आपको कहते आ रहा था कि है इंक्लूड यार यह बस आपको लिखना होता है फिर उसके बाद इंटरमेन करके फिर आप फंक्शन अपना लिखो पूरा कोड लिखो इसका मीनिंग क्या होता है तो सबसे पहले जो हमारा यह है इंक्लूड होता है है शोता है प्री प्रोसेसर है शिंख लूट को हम बोलते हैं यार प्री प्रोसेसर डायरेक्टिव या बोलते हैं प्री प्रोसेसर डायरेक्टिव ठीक है अब नॉट इस यूज टो इंक्लूड हेडर फाइल्स और आर्टी प्रोग्राम जैसे जो एस्टीडीओ डॉट है इसको मैं अलग कलर से करता हूं जो एस्टीडीओ डॉट है यह क्या है डॉट है आप मतलब समझ सकते हो जैसे C++ में आजकल dot h नहीं लगता, but C language में अभी भी है ये, अब STDO को आप ऐसे बोल सकते हो, standard input output, STD से standard input output header, ऐसे आप कह सकते हैं, इसको याद कर सकते हैं, ये responsible होती है, हमारे ये सब चीजों के लिए, प्रिंट F जो हमारा function है, जो उसको print करता है, scanf हमने पढ़ रखा है, इंक्लूर करने के लिए हमें यार यह लिखना होता है, stdo.h, right, similarly, मैंने आपको यार जब हम functions पढ़ रहे थे, तो square root function भी पढ़ाया था, कि अगर आप लिखो कि भाई float में store कर लो square root को, float f is equal to sqrt, और यहाँ पे आप लगा दो कुछ ऐसा, मनलो आपको लेकिन ये function तब तक नहीं चलता, जब तक मैं एक दूसरी header file include नहीं करूँगा, वो भी मैंने आपको सिखाई थी यार, वो हमारी थी hash include, यहाँ पे मैं दूसरी header file अपने include करता हूँ, जो की होती है मेरी math.h, ठीक है, इससे various math के functions आते हैं, सिर्फ ये नहीं आता, कुछ और भ हमने actually में एक और hash include कर रखा था, हमने hash include अगर आपको यादो limits.h भी पढ़ा है, अगर आपने सारी मेरी वीडियो देखी हैं तो 100% यह चीज आपको कराई गई है, limits.h से हम use कर सकते हैं अगर हमें अपने integer की maximum value निकालनी हो, या फिर अपनी minimum value निकालनी हो, किसी भी चीज की integer लिमिट दॉट इस्तेमाल करके एक बार आते हैं थोड़ा सा अपने कोडिंग स्क्रीन पर आते और आपको वापिस से सारी की सारी चीजें धीरे-धीरे करके मैं आपको वापिस से पढ़ाता हूं ठीक है उसके बाद हम मैक्रोस की तरफ बढ़ेंगे कि जो यह प्रोसेसर है ठीक है जिस द प्री प्रोसेसर है शिव प्री प्रोसेसर जिस कंप्लीट थिंग इस इसका और भी क्या इसको थोड़ा clean भी कर देते हैं, एक नया folder बना लीजिए, जिसका आप नाम रखिए, आज C का last lecture, आज हमारा C का last lecture होने वाला यार, ठीक है, C, last, lecture, comments में यार ये जरूर बता देना आप, हाला कि भसड मत मचाना, वस नॉर्मली बताना, कि क्या आप में से बहुत सारे स्टूडेंट्स को अक्शली में डेटा स्ट्रेक्चर एलगोरिडम अपने सेकंड समिस्टर में सी लैंग्वेज में ही पढ़ना है मतलब वह मैंने टरी है तो बताइए फिर हम यार एक और टीचर है पंकच सर जो जाएंगे ठीक है तो यहां सी प्रोग्रामिंग को खोलिए एंड अपने फोल्डर को खोल देते हैं बन गया होगा यार अ कि हमारा फोल्डर यह राश लेक्शन ठीक है इसी के अंदर हम नई फाइल बनाते हैं सबसे पहले नाम देते हैं प्री प्रोसेसर ठीक है डॉट सी आज तेहां पर आर कोड लिखते हैं अपना अच्छा एक और चीज कि मान ले हम मान लोग पोड़ लिखते हैं इस एक सा कोड लिखे दिखाता हूं आपको इंट्रूड स्टीड यू डॉट एच इ यह नहीं है, इसको आधिक है कि आप बहुत दिनों से अपने प्रदेश करने के लिए आवश्यकता है। यहां पर हम लिख देते हैं, हेलो, ठीक है, एक बार रन करते हैं, ठीक है, तो यह मैंने थोड़ा इधर कर दिया, आपने देख लिया होगा, I hope शायद पहली बार मैंने नीचे किया था, तो यह जो हमारे टर्मिनल है, मैंने राइट में कर रखा है, कोई बात नहीं है, वो नी आप देख सकते हैं, एरर आ गया, यहीं मैं आपको बताना जा रहा था, एरर क्यों आ गया, implicitly declaring library function printf, printf stdo.h का एक function है, इनको हम library function कहते हैं, तो इसलिए यार, इन्होंने लिखा है, include, लिख भी रहे हैं, इसको अच्छे देख रहे हैं, include the header stdo.h, और explicitly provide a declaration for printf, ठीक है, दूसरा अगर मान लेते हैं, मैं यह कहता हूँ कि भाई यहाँ पर एक variable बना लेते हैं, float में, float f या float x is equal to sqrt, मेरे को 2 का square root या print करना है, ठीक है, square root of 2, और बाद में हम इसको कर देते हैं, print f, और यहाँ पर हम लिख देते हैं, percentage d, d नहीं या एरर, implicitly declaring library function sqrt, यह अपने आप से ही बता देता है, क्योंकि compiler smart है, ठीक है, sqrt हमने नहीं use किया, तो यह कह रहे करो, तो hashtag include, यहाँ पे लिखो यार अपना, sqrt.h, ठीक है, I am so sorry, sqrt.h नहीं, math.h, वो function का नाम sqrt है, एक बार run करते हैं, तो यह देखिए 1.414, यही होती है ह देखो 1.732 ठीक है आगे की चीज़े तो याद नहीं रहती मेरे को बट तो ऐसे ही यार आपने एक और काम कर सकते हो आप क्यों रूट भी निकाल सकते हो अब एक बार करते हैं आंसर आ रहा है अगर मैं यहां पर बोलूं यार अपना क्या कितने है 216 का क्यों रूट तो 6 होता है देखो 6666 अगर मैं आप दीन बार multiply करेंगे, आपको 10 मिल जाएगा, ठीक है, तो ये CBRT, SQRT ये सब होते हैं, हमारे math.h के अंडर, अच्छा एक चीज़ होती है, वैसे मैं आपको बता चुका हूँ, लेकिन फिर भी एक चीज़ होती है यार हमारी, क्या, limits.h, मतलब, मैं चाहता हूँ कि जो मेरा integer है, ये बात बहुत clear है, मैं अपने integer के अंदर, मान लेते हैं, int x, कोई भी number store नहीं कर सकता है, ऐसे कितना भी बड़ा, एक limit होती है उसकी, कि बहुत बड़ा number store करने की और बहुत छोटा number store करने की. उस limit को कैसे निकाले, तो अगर मैं यहाँ पर लिखता हूँ int, ठीक है, तो अगर यहाँ पर कहता हूँ मैं max, देखो यहाँ गया, थोड़ा सा गलत से आ रहा है, लेकिन मैं कहता हूँ int max, ठीक है, और फिर अगर मैं कर देता हूँ printf, यहाँ पर, एक बार देख लेते हैं, actually c प्रिंट कर लेते हैं देखते हैं एरर आएगा तो पता लग जाएगा ठीक है भाई अंड एक्टिफाइड इंटर्नेट की जगह कुछ और एक्सप्रेशन होता है चेक करते हैं इसको इंटर ऐसे आ रहा है क्या अच्छा ऐसे आ रहा है हमारा ठीक है डिफाइन एंटर्नेट यह मेरा largest number है जो कि मेरा int data type, int वाला डबबा इससे बड़ा number store नहीं कर सकता अगर मैं करके भी देखो, और ऐसे declare करते हैं, यहाँ पे मैंने 2 underscore लगा रखे है, I believe, एक, दो, हाँ, फिर लिखो capital में int, फिर एक underscore, फिर max, फिर दो underscore, ठीक है, C++ language में हम ऐसे लिखते है, int x is equal to सिर्फ, वो थोड़ा इसके बाद बनी है, इससे असान और इससे अच्छी बनी ह यहाँ पर दूसरा विरेबल है तो int y is equal to this तो अगर मेरे को मान लो y print कराना है तो y print हो जाएगा बिल्कुल सही है देखो लेकिन अगर मैं एक भी जादा निकल जाओ इससे 7 की जगे 8 कर दो बस देखो एक जादा है यह तो है निवाय की value warning भी आ रही है ठीक है भाई warning इस बात की आ रही है कि int से आप long में कर रहे हो मतलब integer की आप उसकी औकाद से ही बाहर जा रहे हो फिर देखना run किया तो देखो वापिस से आ रहा है अच्छा इसमें तो दूसरी वार्निंग आ रही है मैंने यहां पर डी लिख दिया ना तो इसका फॉर्माट स्पेसिफार भी अलग होता है एलडी होता है अब देखिए नंबर आ गया 8 बिल्कुल सही है मैं 9 भी कर दूं तो लॉंग होता है अ जो आपका int data type होता है यार, वो हमारी 4 bytes घेरता है memory के अंतर 4 bytes का मतलब होता है 4 x 8 यानि कि 32 bits एक byte में 8 bits होती है 32 bits का यार simple मतलब होता है कि हमारे पास 2 raised to the power 32 options है options मतलब इतने numbers मैं store कर सकता हूँ ठीक है अब इसका reason यार इसके लिए आपको 11th class की permutation and combination आनी चाहिए 32 bits का मतलब होता है, हमारे पास 32 bits है, और हर एक bit में, हर एक bit में या तो 0 store हो सकता है या 1, क्योंकि computer को यही समझ आता है, binary में, तो सबके पास दो-दो options है, तो 2 raise to power 32 बन गया हमारा, ठीक है, समझ नहीं भी आ रहा है, तो यह आद कर लो, इतना हो गया, अब इतने numbers है, तो होता क्या है, जितने हम positive number रखना चाते हैं, उतने ही negative रखना चाते हैं, तो हमारी जो int की range होती है, int की जो range होती है, वो होती है, minus 2 raise to power 16 से, इसका आदा कर दो, से लेकर, प्लस 2 रेज्ट पावर 16 तक, बस माइनस 1 लगाता है यहाँ पर माइनस 1 यार क्लियरली सिर्फ इसलिए आया है हमारा, क्योंकि एक नंबर मेरा 0 भी है ना, तो इसलिए एक नंबर कम कर दिया है, समझना इस बात को, लेकिन जो हमारा long होता है, तो वह नहीं लगता है, वह 8 बात लेता है, और अगर आप एक बात करते हैं, तो वह नहीं लगता है, तो आप यहां पर चल रहा है तो आप बहुत सिंफिकेंटली ज्यादा फॉर इंटू एट यानि कि यह नंबर स्टोर कर सकते हैं हम चौश अप्शन है हमारे पास अब टू रेज़ट पावर थर्डी टू और टू रेज़ट पावर 32 से लेकर 2-32-1 ठीक है तो ऐसा सीन होता है इधर आ जाते हैं वापस से अब देखो इसको इस्तेमाल करने के लिए अगेन यह मेरा काम तो चल रहा है जो इंटमैक्स है यार यहां पर यह हमारा यह आंसर लाकर दे रहा है अच्छा अगर मैं यहां लिमिट टॉट होता था अक्शनी ना सीप्लस पर इस्तेमाल करना बड़ता है मैं अगर लिखो इंक्लूड लिमिट टॉट है ठीक है अब यार बिल्कुल यार काम कर रहा है यार अक्शली यह चीज याद मत करना यह गलत नहीं है जो मैंने आपको बताया लेकिन यह यूज मत करना लेकर अन करते हैं हम अफ कॉर्स सारी की सारी चीजें चलती है नेर को अपना अगर एक सी प्रिंट करना है ठीक है इसको अटा देते हैं यह देखो तो बिल्कुल सही आज आप सब्सक्राइब इंट मैक्स आपको यूज करना है किसके लिए क्या तो यह देखिए यह minimum value आ गई integer range की right, यह limits.h आपको डालना पड़ेगा लेकिन अगर आप नहीं डालते तो of course आपको यहाँ पे देखो error आ गया ठीक है error आ गया although इसने हमें बताया नहीं पिछली बारी की तरह कि आप पिछली बार इसने बता दिया था कि sqrt के लिए आप math.h use करो नीचे लेकिन जो दूसरी चीज थी ना यह double वाला यह अभी आपने notice किया होगा यह तो यहां पर कुछ डिफाइन आ रहा है हैस्टैक डिफाइन दिस तो बेसिकली एक यह पूरा हम यूज कर रहे हैं यह बिल्ट इन डिफाइन चीज है मैं आपको भी समझाऊंगा है टक डिफाइन क्या होता है टाइप टो यह होता है इंट अब मान लीजिए आपको ऐसे ही लिमिट जॉटेज किस काम के लिए आता है आपको यहां पर देखना है अपना क्या यार मैं लिख देता हूं लॉन वाइट इफेक्ट टू इसका भी कुछ मैक्सिमम होता है हां तो आप यार लॉन मैक्सिमम और एक आंग्राम पास इंट की जगह टाइप में लिखना है लॉन मैक्सिमम अगर मान लो मैं इस वाय को प्रिंट करा हूं फॉरमेट स्पेसिफार चेंज कर देते हैं यार और मैं प्रिंट कराता हूं वाइको तो यह वह नंबर है अरे बापरे कंट्रोल सी जैसे कि मैं कह रहा था सिग्निफिकेंटली बड़ा इस लाइन में भी नहीं आ रहा है इस दम मैक्सिमल वैल्यू फ्लॉम अब इसको और इस आपको यह सबसे आधे लिए समझ आगे होगी अभी तक हमने जो भी पढ़ा है अब आजाते हैं यहाँ पर Macro के ऊपर हम पढ़ते हैं Macro and Macro Functions तो यहाँ पर मैंने कुछ लिखा है वही है लिखा है इसको तो प्री प्रोसेसर कहते है पर यहाँ पर लिखा है Define फिर मैंने space दिया है फिर मैंने लिखा है पाए ठीक है और फिर actually हाँ पर equal to नहीं लिखना होता है यह कहाँ से ही लिख दिया है यह गलत है तो यहाँ पर ऐसे लिखा है Define पाए space 3.1419 ऐसे करके कुछ लिखा है तो basically hash Define क्या होता है यार यह बड़ी ब� कुछ भी और यहाँ पर एक value तो वो उसकी value बन जाती है अब इसका मैं आपको use समझाता हूँ जैसे pi जो है pi की इतनी बड़ी value है यह तो चलते रहती है कभी खतम नहीं होती non-terminating non-repeating होता है pi हम कभी भी अगर मान लो हमें area of a circle निकालना है तो हम तब उस समय यार 3.14 use कर लेते हैं कि 3.14 1592 65 यह सब भी होता है तो अगर आपको कहीं store करानी है, तो क्या बार-बार ये वाला number लिखोगे हर जगे यार? Of course, आप एक काम तो करी सकते हो, कि आप उस variable का नाम लिख सकते हो, int pi, sorry, यहाँ पर आप लिख सकते हो, float pi is equal to this, ठीक है, ये वाला number, कि अगर आप लिखते हो, flat नहीं, float pi, एक variable ही बना दिया मैंने, इस एकॉल टू थ्री पॉइंट वन फॉर वन फाइब नाइन टू सिक्स फाइब थ्री फाइब नाइन और फिर बार-बार इसको यूज कर दो यह यूज होगा हां ट्रू बिल्कुल होता है कभी-कभी हमें अपना वेरियेबल रियूज करना होता है प्रोग्राम के अंदर ऐसा होगा कि हमें अपना वेरियेबल रियूज करना पड़ता है उसमें हम क्या करेंगे मान लो हमने एक लिख रखा होता है यहां पर एक तो हमना उस एक को बाद में किसी और इसका काम होता है hash define का कि ये permanently अब मैं जब भी प्रोग्राम में कहीं पे भी pi को use करूँगा तो pi का मतलब ये होगा सीधा ठीक है करके दिखाता हूँ आपको और भी इसका meaning समझाऊँगा अभी भी आपको थोड़ा सा हो सकता है मजा ना आ रहा हूँ इस type def वाली चीज में अब यह देखिए, अगर मैं लिखता हूँ यहाँ पे, hash define, ठीक है, i, और यहाँ पे value दे दूँ मैं अपनी वही 3.14, ऐसे देना होता है, सिर्फ space दे के, hash define, space, अगर मैं यहाँ पे लिखूँ 3.14, 15, और 92, फिर आ गया हमारा 65, फिर आ गया हमारा 35, और फिर 9, ठीक है यार और पाए तो क्या यह चीज होगी प्रिंट करके देखते हैं यार बिल्कुल हो गया देखो पाइटी वैल्यू लेकिन इतनी आईक्यूम क्योंकि हमारा फ्लोट होता है फ्लोट में भी अगर आपको नहीं पता हो तो देखो 123456 अक्शन यह ऐसा होता है कि फ्लोट भी हमारा सिक्स डेसिमल प्लेसेस तक ही इसके बस की होती है वैल्यूस को स्टोर करना लेकिन हमारे पास एक वह तो फ्लोट होता है अगर मैं डबल की बात करूं ठीक है डबल के लिए हमारा फॉरमेट स्पेसिफाइर शायद कुछ और उसक एक्स इग्वल टू फॉर एक्सांपल यह बड़ी थी बैल्यू तो और फिर अगर मैं इस एक्स को प्रिंट करा तो यहां पर आ जाएगा क्या एरर हो रहा है क्या नहीं हो रहा है तो एक बार देख लेते हैं लगते हैं तो गाइस यार यहां पर अगर आपको यहां पर याद आया कि छह से ज्यादा अगर आपको डेसिमल करने ने टेक्निकली स्पीकिंग जो डबल है वह फॉर ज्यादा पॉइंट एन फ ध्यान देना पॉइंट एन तो यह दस डिसिमल प्लेस देगा इसका यह मतलब होता है आप देख सकते हो कितने डिसिमल प्लेस है एक दो तीन चार पांच शेष आठ नौ तस अब इस केस में हमारे पास थे कितने एक दो तीन चार पांच शेष आठ नौ तस ग्यारा तो अगर मैं इलेवन लिखूंगा तो मेरा पूरा नंबर आ जाएगा रन करता हूं पूरा नाइन तक आ गया अच्छा वही हुआ 3.1415 लेकिन आगे के मेरे यार 0s आ गए हैं लेकिन आप देखोगे कुछ issues आ रहे हैं यहाँ पे इतने ही 11 तक तो यहाँ था फिर यह 12, 13, 14, 15, 16 तक हो रहा है हमारा काम ठीक है 16 के बाद अजीब सी values आने लग गई है इनका कोई लेना देना नहीं है इसका मतलब होता है कि इसके आगे 0, 0 हो अच्छा तो अगर मैं 16 करूँ 16 में भी 0, 1 आ गया तो अगर मैं last तो यह दबल होता है यार मेरा डबल 15 डिसिमल प्लेसेस तक हमें खेच के लेकर जा सकता है यह दबल 15 डिसिमल प्लेसेस अगर आपको और बड़ी चीज चाहिए तो आपना लॉन डबल का इस्तेमाल कर सकते हैं तो मैं लिखूं लॉन डबल और यहां पर से 17 भी लिखूं तो इसमें भी garbage value तो आ ही रही है at the end for some reason ठीक है आनी तो नहीं चाहिए या तो यह कुछ रखते होंगे rule की 1, 2, 3, 4, 5 जी जीरों जाते हैं ठीक है जैसे अगर मैं यहाँ पर लिख दूँ 20 तो देखो अजीब से number तो हमारे आ ही रहे है तो avoid ही करना है इसको क्यों हम आगे 11 चाहिए मेरे को यार तो मैं 11 यूज करके यह चीज प्रिंट करा दूंगा अब आगे बढ़ते हैं पॉइंट यह था कि क्या यह डिफाइन यही काम करता है तो बालतु की चीज है तो वैसे भी लिख सकते थे कैसे हम यही की नहीं लिख देते हैं यही जो हमने कर रखा है ड� मान लीजिए इधर आ जाते हैं हम इसको अटा देते थोड़ा सा हमें circle का area निकालने है functions के थूँ तो हम एक function बनाएगी जो कि area return करेगा तो area हो सकता है float में हो तो हम लिख देंगे float area जो कि एक radius accept करेगा वो भी हम float में लिख देते हैं float radius r से ये return क्या करेगा आप simply एक ही line में लिख सकते हो कि भाई return pi r square ठीक है जो हमने उपर use कर रखा है इस वर्याबल को यह व्यक्ति कर सकते हैं, इस वर्याबल को इस वर तो यह राइडियस को अपने राइडियस को अपना अपना ऐसे एक में radius और यहाँ पे अपना जो भी मेरे को function तो अगर मेरे को छोटा सा function मनाना है जिसके लिए जरूरी नहीं है कि मैं तीन लाइने लिखूँ बस मेरे को एकी चीज return करनी है simply जादा कोई बड़ा काम नहीं करना तो मैं macro function का भी इस्तेमाल कर सकता हूँ इसका बस यह काम है define एक bracket दे दो यहाँ पे लिख दो अपना यार जो भी आप value मिलेगी तो यहाँ पे यह चीज लिख दो यार area वही जैसे function में नहीं होता function argument और यहाँ पे आपको इसका आर का ना अच्छी बात क्या है कि आपको यहाँ पे वो specify करने की जरूरत नहीं है इसका data type, जैसे यहाँ पे लिखते है न, float r, argument में, यहाँ पे भी float लिखते है, यह return type क्या है हमारा, फिर argument का type क्या है, ठीक है, यहाँ जरूरत नहीं है, और फिर आप यहाँ जो कि return क्या करेगा basically तो r into r ठीक है और अच्छा हाथ डिफाइन जब आप कर रहे हो तो यहां पर यह भी नहीं लगाते हैं ठीक है कि है वाले में नहीं लगाते हैं अब मैं रन करता हूं तो देखो सेम आंसर आ जाएगा अब यह वाला एरिया इसको कर रहा है ठीक है समझ रह लेकिन एक्जाम में लिखने के लिए बढ़ते हैं, लेकिन इस प्रश्न पर इस्तेमेंट को इस्तेमाल करें। इस प्रश्न पर इस्तेमेंट क्या है? इस प्रश्न पर इस्तेमाल करें। इस प्रश्न पर इस्ते यहाँ पर सिंटाक्स है, कुछ ऐसा चलता है स्विच्च, यहाँ पर मैं लिखता हूँ integer expression या character expression भी लिख सकता हूँ या ज़रूरी नहीं है integer हो, यहाँ पर मैं cases बनाता हूँ, मैं लिखता हूँ case पहला वाला अपना, case दूसरा, case तीसरा, then default case, ठीक है, और फिर इसे आपसे ह यह बेसिकली मान लो आप ऐसा भी कर सकते थे अगर आप code में सिर्फ यह लेकर int n, c in n हम क्या रखेंगे हम अपना week number नहीं या day number, 127 जो होता है यानि कि 1 अगर print हो तो Monday print हो जाए ऐसा हो 2 हो तो Tuesday, तो हम FF से भी code बना सकते है, int n मैं कहता हूँ scanf, ले सकता हूँ मैं इसकी value ले लूँगा scanf percentage d, scanf percentage d और फिर सीधा मैं इसलिए condition लगा सकता हूँ, एकी बारी मैं हो सकती है, इस इलसे फिर करके, मैं सीधा लिख दूँगा, अगर n1 के बराबर है, तो यहाँ पर printf, Monday, ठीक है, फिर similarly आर, इलसे फिर, n is equal to 2, 3, 4, इलसे फिर मैं question कर दे सकता हूँ, अब मैं आपक तो यहाँ आ जाते हैं अपनी कोडिंग स्क्रीन पर और एक नई फाइल क्रिएट करते हैं इस फाइल का नाम दे देते हैं यार स्विच्च एक्ट्रीट में डॉट सी एंड यहां पर स्टार्ट करते हैं अपना इंक्लूड स्टीड योड इसके लिए आपको कोई एक्स्ट्रा दे नंबर होना चाहिए तो यह वन से लेकर सेवन लिख देता हूं ऐसे वन टू सेवन ब्लैकट में और तो ग्याब देते हैं एंड यहां पर स्कैन कर लेते हैं इनपुट ले लेते हैं परसेंटेज डी में और यहां पर लिख देते हैं एंड ठीक है कर सकते हो अब सुच ऐसे चलता है आप लेकर शुच ठीक है अपने आप इसारी चीजें आ गई वैसे तो अ ब्रेक भी आ गया लेकिन मैं ऐसे नहीं लिखना चाहता था मैं खुद से लिखूंगा देखो आप लिखोगे स्विच अंदर आप यार क्या डालते हो वह चीज जालोगे जिसके अकॉर्डिंग आपको कंडीशन सेट करनी है जैसे अभी हम इंटीजर की बात कर रहे हैं इंट जो भी integer है, अब यहाँ पे आपको लिखना है case, ठीक है, case, ध्यान देना बड़े गौर से, इस case में क्या होगा, case लिखो one, समझना इसका मतलब क्या है, यहाँ पे दे दो colon, ठीक है, और इसकी अगली line में आपको क्या लिखना है, अगली line में आपको लिखना है printf, और यह इंडेंटेशन दे अगर थोड़ा अच्छा लगता है इसी को कॉपी पेस्ट करो ठीक है साथ बार कॉपी पेस्ट कर दो इसी चीज को इन फैक्ट एक काम करते हैं रह से नहीं इसको कर लेते हैं कॉपी पेस्ट तो कंट्रोल सी फिर एक दो तीन चार पांच छह ठीक है कि यहां पर लिखा हूं थर्सडे ठीक है यहां पर लिखा हूं कि इस फाइव यहां पर लिखा हूं कि इस यहां पर लिखा हूं यह जो 1, 2, 3 है, जरूरी नहीं है कि मैं इनको order में लिखूं, ठीक है, 1 मेरा n की value है, 4 मेरी क्या है, यहाँ पे n की value है, यह 6 क्या n की value है, अगर n मेरा 6 होता है, तो यह print हो जाएगा, समझ रहे हो, थोड़ा-बहुत if-else statement जैसा, यह एक ही उसमें है, बट यहाँ पे लिखूं तो default case मेरा क्या कहता है, default case मेरा कहता है, यहाँ पे मैं कुछ और print करा देता हूँ, जैसे मैं print करा देता हूँ कि invalid, मैं यहाँ पे सीजा लिख लेता हूँ यार, ठीक है, मैं यहाँ पे लिख लेता हूँ, control C, control V, कि भाई यह लिखेगा यार, printf, invalid, invalid number, एक बार इस code को run करक enter day number 1-7, मैं लिखता हूँ 2, तो क्या आ गया, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, invalid number, Monday नहीं आया, क्यों, मेरे को सिर्फ Tuesday चाहिए था, अब मैं वापस डर्न करता हूँ, मैं लिखता हूँ यहाँ पे 7, Sunday, invalid number, तो यह क्या काम हो रहा है, अब यहाँ पे हम break statement का इस्तेमाल करते हैं, break हम अलड़ी वापस रन करता हूँ और मैं वन लिखता हूँ एक तो मैं ना इन सब के आगे ना एक backslash n भी देता हूँ ताकि ये तो यार एक चीज रहे हमारी ठीक है backslash n की जरूरत तो नहीं है लेकिन चलो कोई नहीं बस आपको दिखाने के लिए कर लेते हैं यार ये चीज भी enter देता ह तो switch में n की value 1 हुई, तो उसने देखा क्या ये 1 है, हाँ, तो इसके नीचे के सारी चीज़े print कर दो, क्योंकि ये खतम नहीं हुआ अभी, similarly, अगर मैं लिखता हूँ, for example 4, तो 4 जो week है, उसके नीचे का सब print हो जाएगा, तो थर्ज़डे, फ्राइडे उससे उपर का नहीं, क यहाँ पर हम लगा देते हैं ब्रेक ठीक है अब यहां पर भी देखो हम यह लगा देंगे एक काम करते हैं थोड़ा सा इसको सुंदर बना देते हैं यार थोड़ा सा सुंदर यह आपको समझ आएगा ताकि सारे केसेज अलग-अलग दिखेंगे आपको ठीक है तो यह करना भी ब्रेक से क्या होगा जब इस case का काम हो जाएगा किसी particular case का तो ये switch statement को यार निप्टा देगा फिर वो आगे जादा सोचेगा नहीं और इसके बाद ब्रेक लिखने की जरूरत होती ही नहीं क्योंकि ये last होता है तो ये देखे रन करता हूँ मैं लिखता हूँ one तो Monday ठीक है if else खटाकर case 5 के बाद भी लिख दूना, sorry यहाँ पे नहीं, पूरे case 5 के बाद भी लिख दूना, इधर देखो, तो भी कोई दिक्कत नहीं होगी, मैं run करता हूँ, मैं लिखता हूँ case 3, तो Wednesday ही print होगा, ठीक है, तो ऐसा है कि 1 से लेकर मेरे को 7 तक order में लिखना है, यह जो number है न आप यहाँ पे switch के अंदर जरूरी नहीं है कि यहाँ पे integer expression दो, यहाँ पे character भी दे सकते हैं, in fact हम condition भी दे सकते हैं, although इसका इतना इस्तेमाल नहीं आएगा, कुछ question solve करते हैं सीधा, ठीक है, यही question है, जो की importance रखता है, write a program to create a calculator that performs basic arithmetic operations, add, subtract, multiply, divide, using switch case and functions, इसकी भी जरूरत न एक basic सस्ता जो है calculator बनाकर दिखाता हूँ, FL statement से, ठीक है, यहाँ पर लिख देते है, calculator.c, यह मैं आपको FL से करके दिखाता हूँ, कि मैं कहना क्या चाह रहा हूँ, calculator का यहाँ पर meaning है, वैसे तो बहुत ही simple meaning है, plus, minus, divide, or multiply को use करें, तो stdo.h, int main, हम ना तीन number लेंगे user से, ठीक है, तो हम तीन चीज़े ले लेते हैं, सबसे पहले हम लिखते हैं, int a, हम इसको scan ले लेंगे, मैं आपको समझाता हूँ, मैं करने के वाला हूँ, कुछ print नहीं करेंगे, similarly ऐसी तीन चीजे करेंगे, control c, v, इतना नहीं, फिर हम यहाँ पर लिख देते है, char ch, इस character को input ले लेते हैं, समझना भी, बस थोड़ा सा बरत कर रखो, सही हम बरत हो, एक मिनट बस, ठीक है, फिर int b, and b, मैंने तीन चीजों की input ले लिए, अब मैं यहाँ पर directly, क्या करूँगा, बड़े गौर से देखना, if, अगर मेरा character, character मेरा operator है, ठीक है, this will be your operator, यानि की, यह प्लस हो सकता है, माइनस हो सकता है, ठीक है, यह डिवाइड हो सकता है, और यह हमारा क्या हो सकता है यहाँ पे multiply है, तो अगर मेरा character की value हमने जो दिये user से input लेके, वो है मेरी plus, तो simple से एक काम करो यार क्या, तो बस एक simple से यह वाला काम कर दो कि printf, बहुत simple, printf हमें लिखन तो हमें a और b को plus करना है, a हमारा number है, b भी number है, और यह बीच का operation है, ठीक है, similarly, ऐसे ही आप चार चीज़े लगा दो, ठीक है यहाँ पर, ठीक है, एक मिलट यार, copy, paste, लिख देते हैं यह, अगर character मेरा minus है, तो a minus b return कर दो, अगर character मेरा multiply है, तो a multiplied by b return कर दो, अगर character मेरा divide है, अगर आपको decimal में number चाहिए, तो आप यहाँ पर make sure करो, एक चीज कर लेना, क्योंकि a मेरा integer है, b भी integer है, तो even अगर मैं यहाँ पर percentage f लगाऊँगा, तो answer मेरा गलत आजाएगा, यह सारी चीज़ें हम lecture 1 में पढ़ चुके हैं, y integer divide by integer, integer ही देगा, तो simple आप type casting का इस्तमाल कर सकते हो, तो सिर्फ a के लिए, a की जगे आप लिख दो, ऐसे bracket में लिखो, float of A divided by B ठीक है तो ऐसे हमारा काम बन जाएगा अब एक बार run करते हैं आप मैं समझाता हूँ कर क्या रहा है हम run किया यहाँ अगर मैं simple अब लिख दू 2 plus 9 11 आ गया समझे रहे है यह मेरा calculator है यह मैं चाह रहा था मैं लिखता हूँ 2 divided by 3 answer आ गया 5 plus 8 answer आ गया लेकिन यह एक basic calculator है जो कि 2 operants यह हमारे operants होते हैं this is operant this is operator ठीक है, इसको यह लिखते है, operand, ठीक है, and this is operator, तो हम ऐसा ही code बना रहे हैं, अगर मैं run करके यह लिखूं ना, यार 3 plus 9, फिर plus 8, तो यह काम नहीं देगा, मैंको सिर्फ starting का दे देगा, ठीक है, तो इतना heavy calculator हम नहीं बना रहे हैं, तो आपने देखा मैंने if else से यह किया, अ� आप एक चीज़ रख सकते होंगे आप लिखोगे यहां पर आप उस पर दे दो क्योंकि उसी के ऊपर पर इसकी कंडीशन में भी यहां पर लिख दो यार अब यहां पर चार केसेस बना दो लेकिन अब आपको बिल्कुल जाएगा स्टेटमेंट का फंडा अगर मैं एक तरह में लिखूं प्लस यह समझ रहा है तो यह सिंटाक्स सिच केश का अब आपको चीजें आर समझ आ रही होगी अगर मेरा प्लस है यह तो एक काम करो यार यह प्रिंट कर दो फिर ऑफ कॉर्स ब्रेक भी लगा दोगी आप अब सिमिलरली आप बाकी में क्या ल फिर आप वापिस से आओ यहाँ पे यार दोनों चीजों को copy paste कर लेते हैं यार क्यों मेहनत करें और अपने cases बदल लेते हैं अगर मेरा multiplication है तो a into b return करो अगर मेरा division है तो a divided by b return करो बस यहाँ पे type cast कर दो यार यहाँ पे लिख दो यार float of a ठीक है मैं a को बना रहा हूँ एक float एक बार रन करते हैं, अब यहाँ देखिए, अगर मैं लिखता हूँ 4 divided by 3, answer मिल गए, सब कुछ सही है, कोई भी issue है यहाँ पे नहीं आ रहा है, I hope आपको समझ आ गया होगा, यह होता है वही switch case का एक basic calculator, यह तो हमेशे आपको याद रहना चाहिए, और ज़रूरी नहीं है कि ह कि अगर इन में से कोई भी नहीं आता वो character, कभी हो सकता है हमें एक गलत सा operation दे दे, ठीक है, तो default में आप कर सकते हो printf wrong operator, रॉंग ऑपरेटर या इनवैलिड ऑपरेटर ठीक है इन वैलिड ऑपरेटर ठीक है जैसे कि रन करके देखते हैं मैंने रन किया और मैं कुछ ऐसा लेकर आऊं फॉर ब्रैकिट एट तो यह इनवैलिड है यह ब्रैकिट कोई या सच कुछ है नहीं ठीक है तो यह मजा गई आगे बढ़ते कुछ नहीं है यह बहुत सिंपल है इस वेरी अ बहुत बदली और अगर आप अपना अगला टॉपिक जो कि है डायनामिक मेमोरी अलोकेशन क्या है यार डायनामिक मेमोरी अलोकेशन वैसे यार यह टेक्निकली स्पीकिंग आपकी कोडिंग जर्नी में कभी भी रुकावत नहीं बनने वाली और तो मेरे साथ थोड़ा यहाँ पर बने रहे ना, अब मैं ज्यादा iPad ही दिखाऊंगा, coding screen पर भी आऊंगा थोड़ी देर में पहले अपनी memory layout को समझ लेते हैं तोड़ा सा यार, तो ऐसा होता है यार हमारे पास ना यार, एक तो होता है static memory allocation यहाँ होती है, dynamic यहाँ होती है, समझाऊंगा आपको यह है क्या, ठीक है, हमारी दो तरीके की memory होती है, stacks में होती है, एक होती है heap में होती है, हमारी memory, ठीक है, ए यह स्टाटिकली अलोकेट होता है और कुछ हमारी ऐसी फ्री मेमरी होती है जो कि हीप के अंदर होती है हीप बेसिकली आप कह सकते हो यार एक डेटा स्ट्रक्चर भी आप पढ़ोगे बाद में priority की होता है वैसे वो हीप नहीं होता इससे बेटर यह है कि हम स्टाटिक का बात है कि वह ज़्यादा आपको पढ़ता है जो कमपाइल टाइम में ज़्यादा आता है और वह जो आपको पढ़ता है जो कि जब मैं compilation आपको I hope आप थोड़ा सा पता हो क्या होता है, नहीं पता तो एक बार meaning बताते थाओ, आप सबसे पहले यार अपना code लिखते हो, you write your code, code on VS Code, या फिर कुछ भी, text editor कहते हैं हम इसको या text editor, VS Code या फिर और भी platforms हो सकते हैं, online compiler में लिख सकते हो, lead code के online compiler में लि यह इम्मटीरियल है, इसके कोई वैल्यू नहीं है जब तक आप इसको कंपाइलर में नहीं पास कराते हैं अब आपको याद होगा यार, यह चीज़े आप देते हैं यार किसको, कंपाइलर को और C लाइंगवेज का कंपाइलर होता है, MinGW C और C++ के लिए हम MinGW को आजकल डाउनलोड करते हैं वो सिर्फ zeros and ones समझता है वो यह नहीं समझता कि int A, int B यह सब क्या होता है, ना तो compiler इन सब को actually में computer के लाइक एक code बना देती है, using of course अपनी शक्ती जो भी है, compiler, language को, किसी भी language को, तो इस जैसे C language का अलग compiler होगा, Java का, Java के लिए हमें JDK download करना पड़ता है, compile होने के बाद हमारा program हम क्या करते है, run, तो जब हम run बटन दबाते हैं अपना, code runner वाला जो है, तो सबसे पहले यार वो compile करेगा, फिर run करता है, ठीक है, तो एक चीज होती है, यहाँ पर लिखा है, static memory allocation वो होती है, basically, it means the memory is allocated during compiled time, ठीक है, मतलब, जैसे ही, जैसे मान लो, इधर आ जाते हैं हम थोड़ा सा, ठीक है, यह जो मैंने switch statement की चीज लिखी, switch से लेना देना नहीं है यहाँ पर, लेकिन बस इस चीज को देखो यार, एक बी और एक सी एच तीन डब्बे उनमें से एक इंटीजर का डब्बा है जो कि चार बाइट्स ऑक्यूपाई करता है एक यह इंटीजर का एक और डब्बा है चार बाइट्स ऑक्यूपाई करता है कैरेक्टर एक बाइट्स ऑक्यूपाई करता है तो यह टोटल जो क्योंकि यहाँ पर इतने ही डब्बे बने हैं, यही हमारा scene है मैंको पता है 100% मैं 3 ही डब्बा को इस्तेमाल कर रहा हूँ, उनसे ज्यादा कर ही नहीं रहा अब बात करते हैं दूसरी चीज़ कि फिर यह डाइनमिक क्या होता है?
यह दाता है कि memory is allocated during run time ठीक है यहां पर हम लिख देते है डाइनामिक मेमोरी एलोकेशन डॉट सी और थोड़ा सा code लिखने start करते include stdio.h int main अगर आपको याद हो यार usually हम array का size fixed देते थे लेकिन हम array का size variable भी दे सकते हैं, कैसे यार, fix होता है array का, लेकिन यहां मेरा variable का मतलब है यह, अगर मैं लिखूं int n, फिर मैं input ले लूँ इसका, मैं लिख दूं scanf, percentage d, यहां पे लिख देते हैं यार, and n, मैंने input ले लिया, number का, फिर अगर मैं अब यह लिखूं, int arr of n size, तो क अब मैं मान लो कि चाहता हूँ अपना array पूरा का पूरा बना हूँ, तो क्या मैं बना सकता हूँ? बिल्कुल बना सकता हूँ, using for loops, आप लिख दोगे for int i is equal to 0 and i less than n, क्योंकि last index मेरा n minus 1 हो जाएगा, ठीक है, अगर आपको यह French लग रहा है, इसका मतलब आपने कुछ पढ़ यहाँ पर लिख देते हैं, scanf की जगह हम लिख देते हैं, printf, percentage d, ऐसे, and एक space के साथ, ठीक है, अब देखते हैं, जैसे मैंने run किया, तो वापिस run करते हैं एक बार, in fact, यहाँ लिख देते हैं, पूरा int n के बाद मैं लिख देता हूँ, printf, enter, arrays, size, ठीक है, यह सारी च तो चार elements दे दो, one, two, three, four, तो देखो print भी हो गए, ठीक है, तो अब इस चीज को, इस phenomenon को हम बोलते है, dynamic memory allocation, ऐसा क्यों, क्योंकि, मैंने क्या बोला, पहले हम इस code को लिखते है, तो जैसे जब मैं इस run button को दबाता हूँ, तो code पहले compile होता है, तो एक बात बताओ, जब तक, run यहां पर जो मैं अपना टू या फोर वह रन टाइम पर दे रहा हूं तो यह एक इशू है मैं कंपाइल टाइम में नहीं बता रहा है जो एन है मुझे अभी नहीं बता जब मैं इधर आता हूं मैंने लिखा है इंट ए इंट बी तो इसका मतलब पता है एक विरिबल ले लिया अगर मैं यहाँ लिखता हूँ, int n, तो हाँ, इसके लिए एक डब्बा allocate, 4 bytes of memory, compile time के during allocate हो गई, इसके लिए, कि हमें बताना है कि कितना number होगा, लेकिन जब हम यहाँ आये न, int arr n, तो अभी हमें n ही नहीं पता कितना है, यह कितनी bytes लेगा मेरी यार, यह लेगा n into 4 bytes, एक integer 4 bytes लेता है, अगर मैंने n को 100 दे दिया, n को 1000 दे दिया, तो 4000 bytes ले गए, इसको हम कहते हैं, अभी यह dynamically allocate नहीं हो रही है, यह एक problem है, right, but run time के during जो है, इसको हम कहते हैं यहाँ पे dynamic memory allocation, अब यहाँ पे problem अभी तो नहीं हो रही है आपके सामने, आप यह सोच रहे होगे कि problem तो कोई नहीं हुई, कोई error नहीं आया, लेकिन computer यहाँ पे सिर्फ assume करता है, इस विशेष ने एक बार एक बा जो हमारा size बन गया वो तो, runtime में, लेकिन वो पहले से decided हो रखा था, ठीक है, लेकिन अब इजर अगर हम आते है, उससे पहले थोड़ा सा stack segment को समझते है, ठीक है, यहाँ आपको idea लग जाएगा थोड़ा सा, call stack आपको मैंने सिखाया था recursion के time पे, ठीक है, अगर माललो मेरा यह code है पूरा, int main n is equal to 3, printf n, तो fourth अभी तक हुई नहीं, पहले यहां देखो, currently on line 3, main function चला, n is equal to 3, line 3, तो ये देखो, ये जो call stack है ना मेरा, call तो हमेशा होता है ना function, main function तो हमेशा ही call होगा, तो उसके अंदर अगर कोई function है या नहीं है वो अलग बात है, main call हुआ, तो जैसे ये local variables अपने देख रहा है ना यार, ये इनके लिए जगे बना रहा है, इसन फिर यह आ गया, इधर आ जाते हैं, यह देखिए, अब पहले हम इस function में आए, मान लीजिए, n की जगे मैंने 3 receive किया, क्या 3 बन के बराबर है, नहीं, तो return this thing, त n is equal to 3, तो एक और 4 bytes allocate हुई मेरी, अभी तक compile हो रहा है ये चीज, run नहीं हो रही, फिर इसने देखा क्या यार, क्या कहते हैं, यहाँ पर आगे हम, क्योंकि हमने देखो पहले से n is equal to 3 दे रखा है, समझना इस बात को, अब हम यहाँ पर तीसरी line पर यह वाली तीसरी पर है, बट फिर क्या हुआ, हम इदर आगे थे, factorial चला हमारा, n is equal to 3 पर, अब यह 2 पर गया वापिस से, ठीक है, हर बार एक नया block create होगा, ठीक है, और वो block कितने size का होगा, जितने उसमें local variables होगे, जैसे main function में एक local variable था, इस function में भी technically speaking ये एक variable definitely है, जो इसके pass हुआ है इसके अंदर, तो वो जगे घीरता एक, ये भी मैंने आपको समझाया था, pointers के during, जब हम swap function पढ़ रहे थे, या in general function में मैंने आपको बताया था, कि अगर मैं कोई भी function लिखता हूँ, जैसे sum of two numbers, यहाँ जब तक हमारा base case नहीं आ जाता, of course recursion आप सबने पढ़ रखा हैं, मैं वापस explain नहीं करूँगा, ठीक है, तो अब ये देखो, what if we try to dynamically allocate or increase our memory needs in any function called during run time, अब जो मैंने यहाँ पर array का एक example दिया था, वो बिल्कुल perfect चीज थी, कि run time के time पर यार मैं अपने n को decide कर रहा हूँ, बेसिकली n size का array भी आप कह सकते हैं उसको ठीक है अब stack में क्या होता है even array की भी मैंने आपको memory allocation समझाई थी array के अंदर जितने भी हम array बनाते हैं मानलो 100 size का तो ये 400 bytes एक साथ allocate होती है memory के अंदर address उनका continuous होता है contiguous भी कहते है इस चीज़ को हम ठीक है contiguous memory में array के साथ भी चीज आपकी राम भरी पड़ी है या जो भी memory है वो भरी हुई है और इतना मान लो ये अगर अमारी पूरी storage है पूरी की पूरी storage है अगर ये राम है तो आपका मान लो ये part भरावा है अब आप इतना बड़ा part बनाना चाह रहे हो तो ये हो नहीं पाएगा न यार यहाँ पे ठीक ह वो इस विशेष के लिए क्या प्रभावित है तो यह विशेष के लिए जाता है कि यह विशेष के लिए ज चीक है, as it could lead to some unwanted exceptions in the program during run time, अभी तो नहीं आ रहा है लेकिन आ सकता है, even यार ये देखो, this is not a recommended, जो हमने जस्ट अभी लिखा है, int n, scanfn, और अगर मैं इस size का array बना दू, इसको recommended नहीं है, तो इसका solution होता है या dynamic memory allocation, चीक है, यहाँ पर हम introduce करने वाले है क्या, yet another segment of the memory called the heap segment, बात कर रहे हैं, अब हीप हमारी क्या होती है यार, हीप वो free memory होती है, heap is the free memory which is available to any C program and for that matter C++ in Java, it is a large memory space available where dynamic allocation usually takes place, यह usually इसी के लिए होता है, एक free अलग से memory हम बचा के रखते हैं, heap कहते हैं इसको, as a programmer it gives a lot of power to allocate memory and de-allocate memory on our own and depending on our needs even during compile time, run time, ठीक है, अब यहाँ पर कुछ देख लेते हैं, operations for dynamic allocation, सबसे पहले तो यहाँ dynamically allocate करके देख लेते हैं, कैसे करते हैं, तो इससे बचने का तरीका है कि आप ऐसे मत लिखो इसको, इससे बेटर होगा, आप ऐसे लिखो, int arr n, इस equal to new, in fact, pointers की थूँ करते हैं इसको, int star ptr, pointers and arrays मैंने समझा इस एकुल टू न्यू एंट एंड साइस ठीक है तो यह डायनेमिक मेमोरी अलोकेशन हो रहा है सेम चीज चलीगी यहां पर भी आप यह देखते हैं कि हम डायनेमिक अलोकेशन पर फॉर्म कैसे करते हैं अब यार हमारे पास ना बेसिकली चार ऑपरेशन करते हैं मैं लॉक मेमोरी अलोकेशन कैलोक होता है हमारा फिर हमारे पास उतर रियलोक एंड फ्री ठीक है अब यह पर मैं लॉक और मैं लॉक है यह दोनों अलोकेट करते हैं मेमोरी हीप के अंदर ठीक है अगर आपको रियलोकेशन करनी है जो आपको बढ़ाना है उसके अंदर तो आप इस्तेमाल करते हैं और अगर आपको डि-अलोकेशन करनी है मतलब हटानी है और मेमोरी फ्री करनी है तो एक फ्री ऑपरेशन भी होता है हमारे पास तो यह काफी ज्यादा है इसको देखो सबसे पहले तो यह के बारे में देखते हैं कि मेमोरी अलोकेशन को इस्तेमाल करते हैं ऐसा रहता है हम हमेशा पॉइंटर्स के अंदर ही स्टोर करेंगे सारी चीजें ऐसा क्यों अ अगर मैं लिखता हूँ int star ptr is equal to कुछ भी basically, तो ये एक address को print कर रहा है, मतलब address को अपने पास रख रहा है किसी particular, ठीक है, और जैसे कि हमने arrays के अंदर पढ़ रखा था, अगर arrays का address जो continuous है आपस में, तो अगर उसके first element को address को मैं pointer में store कर दूँ एक, ठीक है, तो basically मेरे पास पूरे array का access हो गया, तो यहाँ पे भी again, अगर मैं लिखता हूँ int star ptr, यानि कि एक pointer variable बनाया है मैंने, इसके अंदर आपको अपने देखा होगा अगर मैं को कैर ऑफ किसी इंटीजर की टाइप कास्टिंग करनी है कैरेक्टर में तो यहां पर अगेन जो भी यह चीज आएगी इसको मैं टाइप कास्ट करके इस पॉइंटर में बना दूंगा ठीक है और उसी टाइप के अगर यह इस प्रश्न प्र यहाँ पर आप फोर भी लिख सकते हैं अगर आपको पहले से इंट पता है। अगर आपको 1000 characters के लिए करना है, आप लिखोगे care pointer, care is equal to this, यहाँ पर आप into one भी कर सकते हो, या फिर into size of care operation भी आप इस्तेमाल कर सकते हो। यह जो size of operator है, इससे आपका size print हो जाता है। जैसे integer का 4 होता है, तो 4 print हो जाएगा, character का 1 होता है, तो 1 print हो जाएगा। इसको एक integer के अंदर store करा देते हैं, यह actually integer ही देता है, मैं लिखता हूँ int a is equal to size of, size t नहीं, size of, और यहाँ पर अगर मैं लिख दूँ int, इसका answer 4 आएगा, अगर मैं printf करा के देखूँ ना यार, अगर मैं printf करूँ इसको, अपने x को, a को sorry, तो देखो answer आएगा 4, run किया 4, यह बाइट्स में होता है हमारा ठीक है तो देखो आठ बाइट्स अगर मैं साइज ऑफ डबल लिखता हूं यहाँ पर साइज ऑफ डबल तो यहाँ कितना आएगा देखो आठ आ गया सिमिलरली साइज ऑफ कैरेक्टर तो यहाँ पर एक आ जाएगा ठीक है कुछ आया नहीं हम और डिवीउ मीन अच्छा बूल ही है यह टैपिटल में लिखना होता है हमें अच्छा जब साइज देना होता है तो कुछ ऐसे करते हैं ट्राइड करते हैं तो देखो बना गया ठीक है वैसे तो हम बूल को ऐसे नहीं लिखते हैं बूल को लिखेंगे यह बंजा है तो एक चीज भूली गया था कि यहां बता देता हूं इंक्लूड बूलियन अगर हम करते हैं ठीक है इंक्लूड बूलियन आश इंक्लूड बूलियन के मेरे को स्टीडी बूल करना होता है स्टीडी बूल डॉट एच ठीक है तो यह देखिए आप रन जाएगा वन ठीक है कभी भी मैंको बूल या बूलियन इंटीजर यूज बूलियन एक्सप्रेशन यूज करना है डाटा टाइप तो उसके लिए म इधर देखिये, तो यहाँ पे कुछ example और दे रखी है, अगर मेरे को caloc से करना है, मतलब, तो मैं similarly लिखूँगा, inch star ptr, यह small i है, is equal to वही same, यहाँ पे float नहीं लिखना है, यहाँ पे बहुती गलत चीज लिख दिया है, यहाँ पे in fact, this is float, अगर मेरे को यार 1000 floating numbers, यानि कि 1000 decimal अगर मेरे को ऐसी similarly यार 100 floating, 100 नहीं 25 यहाँ पे, again गलत slide बन गई थोड़ी सी यार, ठीक है? अगर मैं को 25 floating number store करने है तो मैं यहाँ पर लिखूंगा 25, slice अगर आपको यार दोनों तरीके से कर सकते हो, malloc लिख रहे हो तो आप अपने number of जो भी आपको store करने है number of डब्बे into size of डब्बा या फिर number of डब्बे, size of डब्बा लेकिन वो caloc में होता है तो आप दोनों तरीके से allocate कर सकते है memory, एक फर्क क्या है malloc में और caloc में आर, caloc में पहले से जो हमारी set value होती है, अगर मैंने इतनी integer store कर लिए तो उनकी by default zero value होती है, ठीक है चलिए इसको एक बार कोड करके देखते हैं और चेक कर लेते हैं कि ऐसा सच में हो रहा है या नहीं हो रहा है पहले इसको हम यह कर देते हैं कमेंट आउट अब हम एक बना लेते हैं इंट स्टार क्योंकि मैं एड्रेसी स्टोर करूंगा इंट स्टार ठीक है यहां पर लिख देते हैं मैं लॉक ठीक है यहां पर लिख देते हैं हम मैं लॉक और यार यह एक एरर देगा आपका सबसे पहले तो मैं लोग अगर मैं यहां पर लिखता हूं मान लो मेरे को टेन इंटीजर स्टोर करने तो मैं टेन इंटू फॉर भी लिख सकता हूं सेम बात है या फिर टेन इंटू साइज ऑफ इंट भी लिख सकता हूं मेरी मर्जी है अगर मैं रन करूंगा तो एरर आ जाएगा क्यों भा� अब error नहीं आएगा, run किया, देखो, कोई error नहीं आएगा, तो ऐसे करके ना मैंने 10 integer variables memory में allocate कर दिये, अगर मैं इसको print कराने की कोशिश करूँ, तो print कैसे करूँगा, देखना, print मैं ऐसे कर सकता हूँ, सीधा लिख दो, printf, यहाँ पे मैं integer print कराना चाहता हूँ, तो मैं लि� अगर मैं कभी भी ये लिखता था, pointers का थोड़ा revision कर लेते हैं, कहीं आप भूल गए हो, मैं लिखूँगा int star p is equal to and मानलो x, पहले तो मैंने ये लिख दिया, int x is equal to 6, मैं लिखता हूँ int star p is equal to and x, तो मेरे को अगर pointer के थूँ integer को change या print कराना हुआ, तो मैं ऐसे लिख सकता हू तो इसका हम इस्तेमाल कर सकते हैं, तो स्टार से हम उस इंटीजर को फैच करके लाते हैं, जिसका एड्रेस हमारे पॉइंटर में स्टोर हुआ होता है, यह सारी चीज़ें हम पढ़ चुके हैं, इधर देखते हैं, एक बार इसको प्रिंट करा के देखते हैं, तो हमारा आंसर तो मैं लिखता हूँ PTR++ रन करते हैं, जीरो ही आ रहे हैं, कमाल है यार, मैलोक की भी गारबेज वैल्यू हमारी यहाँ पर जीरो ही आ रही है, अब एक बार कैलोक करके देखते हैं यार, ठीक है, फिर रन करते हैं, कैलोक में तो मैं यह लिखता हूँ, इसमें तो जीरो आए� प्रेस करें और प्लस करें तो यह देखते हैं यह जीरो ही आ रहा है फिर भी ओके तो यहां पर वैसे तो यह गार्बेज वैल्यू होनी चाहिए जो कि मैंने अपने पॉइंटर के अंदर स्टोर किया है ना बट वीएस कोड अभी यहां पर जीरो दिखा रहा है क्या पता फॉर सम री� आपको थोड़ा idea पड़ेगा कि मैं कहना क्या चाहा रहा हूँ आज यह है क्या, ठीक है तो इससे होता क्या है तो देखो इससे यह होता है, जैसे ही मैंने लिखा int star ptr is equal to this तो आप यही सोचोगे न कि इससे पहले मैंने कोई integer तो लिखा नहीं int x is equal to 7, फिर मैं लिख दो int ptr is equal to इसका address pointer तो सीधा address store करता है pointer से मैं इतने सारे integers कैसे store करा रहा हूँ basically 10 integers तो इसमें होता है यह है कि हमारी अगर पूरी memory है, हमारी अगर यहाँ पे पूरी memory है तो जैसे ही मैंने ये वाली statement लिखी है अपनी line, तो मेरे पास लगातार 40, 40 bytes का space continuous, ये allocate हो गया, memory में, ये reserve हो गया, ठीक है, यहाँ पे 10 integers मेरे store हो सकते हैं, यहाँ पे मेरे 10 integers store हो सकते हैं, तो इसे बर कर लेते हैं, 1, 2, 3, ठीक है, 4, 5, 6, 7, 8, 9, और ये हो गया 10, तो ये 10 integers है, हर के अंदर 4, 4 bytes है, तो एक तो ये काम हो गया allocation हो गई और मेरा pointer अभी के लिए यहाँ पे point कर पहले integer पे, मेरा pointer जो है, मेरा जो यहाँ पे pointer है, वो as of now पहले integer पे यहाँ पे अभी point कर रहा है, अब जब मैं print कराता हूँ इसकी value, तो आप बोलोगे यहाँ पे तो मैंने कोई value तो दी ही नहीं, या तो मैं value दे देता, मैंने value तो कोई दी ही नहीं है, तो by default एक garbage value store करता है, ध्यान रखना, star ptr++ नहीं करा मैंने, इसका meaning बहुत अलग हो जाता है यार, इसका मतलब होता है जो उस पे value पड़ी है उसमें एक add कर दो, ptr++ का simple meaning है कि वो एक step नहीं, एक integer आगे, या फिर जिसका भी वो pointer है, integer pointer है, तो 4 byte आगे बढ़ जाये, मतलब अब वो अगले address को point करना तो अगर मैं pointer लिखूं, pointer अभी के लिए x40 को store कर रहा है, PTR का जो डबबा है, इसमें पढ़ा है x40, address को store करते हैं नहीं है, तो PTR प्लस-प्लस करने देने से, यह change हो कि x41 नहीं बनता, x44 बनेगा, क्योंकि यह integer type है, Similarly, if I come here in my caloc, we have seen this, I can do the same thing in caloc, just write a size of a size, write a comma and write this.
Okay, and nowadays, as you can see, both are printing zero, like their default values. Practice, write a program to take n number of integers as input and display them. Okay, so this is a very simple work, you don't have to do anything.
Dynamically, you have to print all these things. Let's see, this example is important. Let's write here. कि एक नई फाइल बना लेते हैं एंड इंटीजर्स डॉट सी तो हम यहां पर लिखेंगे सारी की सारी चीजें ठीक है अपनी हेडर फाइल भी ले लेते हैं घटायार बूलियन की जरूरत नहीं है लेकिन एसटीडी लिब की जरूरत है ठीक है तो मेरे को क्या लेना है मेरे को लेना है यार इन यह भी एक्चुली काम करते हैं ना यार इसको उठा देते हैं इसको हम कर देते हैं यार एंटर नंबर ऑफ इंटीजर यू वांट राइट फिर हम स्कैन भी कर लेते हैं इसको सिंपल चीज और हमें इतने इंटीजर दब करने हैं इंपुट लेने हैं तो देखो एक तरीका क्या होता है इतने इंटीजर को इंपुट लेने का और फिर मैंने यहाँ पर प्रिंट करा दिया है, यह चीज़ को हम देख चुके हैं अल्रेडी ठीक है, चाहिए तो मैं रन करा दूँ देखो मैं लिखता हूँ, एंटर नंबर ऑफ इंटीजर यू वांट तो यहाँ पर मैं लिख सकता हूँ यार यहाँ पर कितना यहाँ पर लिख सकता हूँ 6 फिर सबको इनपुट दे दो ठीक है यह नंबर दे दो यार 5 हो गए 6 फिर यही प्रिंट हो जाएंगे मेरे एरे के फॉर्म में अब बिना एरे के ट तो ताइप कास्ट कर दो पहले तो यार इंट स्टार तो यहां लिख दो मैं लॉक और यहां पर लिख दो कि जितने भी इंटीजर सीए आपको एन और क्या हमारा डाटा टाइप इंटीजर ही है तो आप लिख दो साइज ऑफ इंट या फिर इसकी जगह आप फोर भी यह करने से तो सिर्फ मैंने एक जगे बना दिया खाली, लेकिन input नहीं लिया, तो इनका input भी आप कैसे ले सकते हो, आप pointers के थूँ ले सकते हो, सबसे पहले मैं एक काम करूँगा, सबसे पहले मैं एक दूसरा pointer बना दूँगा, inch star p, जिसको मैं अभी के लिए अपने पहले index प अब मेरे को सब को input लेना है, तो मैं सब को input कैसे ले सकता हूँ, अगर 10 integer है या n integer है, तो मैं एक loop लगा लूँगा, for int i is equal to 1, i less than equal to n, i plus plus, इतनी बार तो मेरे को inputs लेने है, input लेने के लिए मैं scanf का use करूँगा, चाहे कुछ हो, and, यहाँ पे मैं यह लिख सकता हूँ, क्योंक और एंड में ब्राकेट भी लगा लिया करो, अच्छी बात रहती है, एंड में लिख दो स्टार पॉइंटर, जहां पॉइंटर है अभी उस वैल्यू को आप इंपुट ले लो, यहां ऐसे हम पीटी आर प्लस ताकि अगला वाला इनपुट लें अब देखना इससे सारा मेरा काम हो जाएगा और एक बार रन करते कोड को एरर नहीं आएगा कोई एंटर नंबर फ्रंटी जर्स मैं कहता हूं फॉर तो देखो मैं इनफॉर्ट देता हूं खो चुका हूं ठीक है तो प्रिंट करने के लिए सेम काम होता है कंट्रोल सी कंट्रोल भी बस यहां पर लिख दो यार अपना प्रिंट और यहां से अपना and अटा दो, ठीक है, और pointer को आगे बढ़ाते रहो, and pointer नहीं, p को आगे बढ़ाते रहो, और p को ही print कराते रहो, ठीक है, अब देखना run करेंगे, तो सारा सही आ जाएगा, enter number of integers 3, 1, 4, 2, तो देखो, 1, 4, 2, print आ गए, अब run करके दिखाते है, मैं लिखता हूँ 3, 1, 8, 3, तो ओ sorry मैंने एक ही number दे दिया, तीसरा number तो देखो तीनों आगे हमारे प्लिंटो के आगे इसका dry run करना बहुत ज़रूरी है कि मैंने ऐसा क्यूं किया है and in fact इसको एक और जगे store हम करा के रखेंगे ताकि हम खो ना दे int t is equal to p करके ठीक है एक बार मैं इसको आपके सामने dry run करके दिखाता हूँ बहुत ज़रूरी चीज है टेक्निकली स्पीकिंग ये भी एक array ही बन गया है ठीक है अब यहाँ देखिए यार जब मैंने लिखा int star ptr is equal to this तो इस line से हुआ क्या?
इस line से technically speaking एक array बन गया, technically speaking, ठीक है, मान लो n size का, और मैं मान लेता हूँ, मैंने n की value अभी के लिए दे रखी है यार, n की value मैंने अभी के लिए दे रखी है, मान लो 5, तो 1, 2, 3, 4, 5, ठीक है, 5 डब्बे, तो ये लिखने से 5 डब्बे मेरे allocate हो गए, अगर n मेरा 5 है तो, और इसका होगा, मान लेते है x 56. मैंने जब ये भी लिखा ना, तो इससे ये भी एक काम हो गया, कि pointer अभी के लिए यार इस पे है, मतलब, pointer वाला जो डब्बा है currently, उसके अंदर अभी x 40 है. क्यों? क्योंकि pointer address को store करता है ना, तो pointer डब्बे में अभी x 40 है, यहाँ पे अभी point कर रहा है.
ठीक है? अब मैंने क्या किया? पहले से int star p is equal to ptr लिख दिया. अगर मैं ये line नहीं लिखता मान लेते हैं.
मान लेते हैं कि यार मैंने ये line नहीं लिख रही, कोई बात नहीं, अब हम इदर आ जाते हैं, input ले सकते हैं हम फिर भी, input हमने लिया कैसे है, पहली बार तो n bar loop चला है तो n numbers हमें input लेने है, scanf percentage d and star ptr, इसका क्या मतलब हो, सबसे पहली बात तो, ptr में x40 store है, तो star ptr का मतलब क लो तो अब जब मैं यहाँ पे input लेता हूँ मान लो मैंने number दे दिया five तो ये काम हो गया तो जब मैं लेकता हूँ PTR plus तो ऐसा होता है कि यह PTR इधर आ जाता है और इसके अंदर अब store हो जाता है X44 समझो इस बार फिर same काम हुआ हमने input लिया यार इसके में मान लो हमने input ले लिया one फिर हमने किया PTR plus PTR इधर आ गया इसके अंदर आ गया X48 फिर मान लेते हैं इसमें input लिया six फिर हमने लिया PTR plus तो X52 आ गया इसमें फिर हमने input लिया 10, फिर हमने लिखा ptr++, pointer में आ गया x56, फिर हमने यहाँ पर मान लिए input लिया number 8, फिर हमने लिखा ptr++, तो ptr के अंदर आ गया x60, नए address आ गया, जो कि मान लेते हैं पूरी memory है ना हमारी देखो, यह हमारी memory है चलते जा रही है, उसमें से तो हमने बस यह block उठाया है बीकेले, continuous memory का, इतना 5 into 4, 20 bytes उठाली हमने memory के अंदर की, और अब जो pointer है unfortunately यहाँ पर point कर रहा है मान लेते है यह भी अभी के लिए x60 है यह है x36 इससे पहले की memory इससे बाद की memory यह हो तो हमारा pointer अब इधर है लेकिन अब इसका तो हिसाब हम खो चुके यहाँ पर कुछ नहीं है यह हमारी वो चीज थी क्योंकि अब मैं खो चुका हूँ इसका address मेरे को हमेशा इस पूरी चीज़ को print कराने के लिए first वाले का address चाहिया ही चाहिया होता है, चाहिया कुछ है, ये मेरे को चाहिये, अब ये तो मैंने खो दिया यार, अब मैं इधर आ चुका हूँ, तो इसलिए मैंने यहाँ पे पहले ही लिख दिया था, inch star p is equal to ptr, ताकि जब मैंने ये लिखा था ना, तो सिर्फ starting में अब इससे हुआ क्या? इससे ये हुआ कि अब मैं वापिस से इस वैल्यू पे ट्रावल कर सकता हूँ इनको चाहे तो प्रिंट करा अगर इसको भूल जाओ कि मैंने यह लिखा है, तो 1 से लेकर n मैंने simple print करा दिया, value star p, जब मैंने लिखा star p, तो इसका क्या मतलब है, p पे जाओ, p, p में 40 store है, x 40, x 40 address पे जाओ, 5 value print कर दो, fetch करके लाओ, print कर दिया, p++, p++ फिर इधर आ गए, फिर वापस p के अंदर लिक्कत ना हो, in general आप हमेशा क्या करोगे, आप अपने जो starting में आपने ptr बना रखा ना, इसको आप preserve रखोगे, मतलब जब आपने लिखा int p is equal to ptr, तो आप यहाँ पे ना star p का काम करोगे, और p को आगे लेके जाओगे, similarly आप वापिस से लिख दोगे, यहाँ पे खतम होने एक और दो से काम चला सकते हैं, दो पॉइटर से, बहुत बढ़िया, I hope आपको ही समझ आ गया होगा, आगे बढ़ते हैं थोड़ा सा, memory deallocation की तरफ यार, तो अब मानलो यार, यहाँ पे लिखा है, note that the memory allocated in heap is not freed, खाली नहीं होती, जब तक हमने explicitly specify ना कर रखा हो, ठीक है, तो to manage memory comes great responsibility काफी अच्छी slides बनी हुई है memory deallocation देखते है यह free operator को use करके होता है जैसे malloc लिखते थे अब यहाँ लिखेंगे हम free of course यहाँ पर हम यह नहीं लिखेंगे कि int star ptr is equal to int star free नहीं हम simple लिख देंगे free और उस pointer का नाम यहाँ पर लिखा है pointer to heap address मतलब मानलो हमने यह लिख रखा है कभी int star ptr is equal to वही सारी चीज़े लास्ट में हमें free करना हो तो सीधा लिखो free ptr, simple, simple काम करना हो, ठीक है, यहाँ पे लिखा भी है pointer to heap address is the pointer to heap memory allocated dynamically using malloc and calloc function, जिससे भी हमने किया हो, तो जब हमने ये किया, तो हमने memory allocate कर दी आर, 8 into 32 bytes, 32 bits, I'm so sorry, नहीं 32 bytes, फिर जब हमने लिखा free pointer, तो वो सारी memory अब डी अलोके� यहां लिखा है memory deallocated but pointers refer to a memory which does not belongs to us hence pointer should be set to null अब यहां पे pointer is equal to null क्यों लिखा है यार null pointer क्या होता है यार null आपको सिखा देता हूँ basically null के लिए थोड़ा बहुत यहां पे सिखाना पड़ेगा आपको इधर आ जाते हैं पहले यहां लिख देते है free.c and n integers पे आते हैं एक बारी के लिए control c control b यह देखिए यार चीज बताता हूं आपको यहां पर सबसे पहले तो नल पॉइंटर क्या होता है अगर मैं कभी भी यार यह लिखता हूं यार इन स्टार पीटी आर इग्वल टू कैपिटल मिनल और फिर अगर मैं इसको प्रिंट कराकर देखो यह एड्रेस ना पॉइंटर इससे पहले चलो ये देख लेते हैं, अगर मैं कभी लिखता हूँ int x is equal to 9, और लिखो ptr is equal to and x, फिर अगर हम ptr को print करा है, आप सब जानते हैं कि address आ जाएगा ये रहा है, लेकिन अगर मैं null लिखूँ, तो null एक reserved address होता है special, जिसका आएगा 0x0, तो एक special address है, ये काम आता है ह तो देखो 8 तो हमारी bytes ऐसे allocate हो गई, 8 locations हमारी यहाँ पर allocate हो गई है और starting में pointer point कर रहा है तो मैंने जब यह लिखा ना free तो deallocate हो गई यह memory मतलब अब कुछ और भी यहाँ पर store हो सकता है, देखो allocation का simple meaning होता है अगर मैंने यहाँ पर समझी इस बात को मैंने बस उसको एक address दे दिया होता है कोई भी मान लीजिए मैंने एक number सेट कर दिया उसका अगला address ही उसे दे दिया तो उसमें और इसमें difference क्या होता? उसमें हम एक surety नहीं मिलती कि अगर मान लो यहाँ पे मेरा pointer point कर रहा है, तो क्या आगे की memory कुछ होगी या नहीं होगी? उसमें कुछ stored होगा या नहीं होगा?
जब मैं यह लिखता हूँ ना malloc, तो यह सबसे पहले ढूंढता है अब memory के अंदर एक block कहां खाली है, कितना block? n into size of int यानि की 5 into 4 मान लो, कहां 20 bytes लगातार memory में खाली हो वहां ढूंढेगा, यह नहीं है कि तोटी भी memory में खाली है, ठीक है? तो जब ये free वाली बात हम लिखते हैं, इसका मतलब वो सारी चीज़ें वापिस से free हो जाती हैं, तो इसलिए pointer को null सेट कर दो, वरना वहीं point करता रहेगा अभी भी, pointer का point कर फ्री करने से memory फ्री हो जाती है बस वो ठीक है भाई मतलब अब और चीजे भी वहाँ पे आ सकती है इसका यह मतलब आगे बढ़ते है थोड़ा सा यार deallocation पे आते है deallocation हम अलड़ी देखी चुके है यार तो note that the same address which is returned by malloc or calloc should be used to free up the allocated memory अगर मैंने memory allocate कर दी यह लिख दिया 2 into size of int तो basically यह हुआ memory के अंदर यार हमारे ऐसे दो integer store हो गए, मान लेते है address है x40, x44, ठीक है, फिर हमारे ये है x48, x36, और मैंने ये वाले दो allocate कर दिये, और ptr head लिख दिया, ptr ही मान लेते है अभी के लिए इसको यार, चलो ptr head ही लिख देते है, तो मैंने ptr head नाम का एक pointer, इस पे point करा रहा हू� अब जब मैंने लिखा int star ptr is equal to ptr head, समझना इस बात को, int star ptr is equal to ptr head, इसका मतलब एक और ptr भी है, उसको भी मैं यहीं point करा रहा हूँ, इसी जगे, 40 address पे, फिर मैं लिखता हूँ ptr++, या अगर मैं इसको छोड़ दूँ simple, ptr head, इस pointer का नाम, plus plus, तो इसका क्या मतलब होगा मैंने इसको एक step आगे बढ़ा दिया जो हमने बात की थी प्रिंटिंग के लिए या कुछ करने के लिए फिर अगर मैं करता हूँ free ptr तो ये error दे देगा ये error मेरा क्यों देगा यार क्योंकि अब मैं इधर आ चुका हूँ मैंने ये पूरी free करनी थी तो मैंने हमेशा starting वाले member का address चाहिया ही चाहिया होता है इसलिए मैं कहीं और उसे store करा सकता हूँ free वाले में basically कहने का ये मतलब है कि अगर मैं लिखो इंट स्टार पीटी आर इज इक्वल टू यहां पर मैं लिख दूं इंट स्टार इंट एट नहीं इंट स्टार और कैलोग करके देखते हैं यार कैलोग से भी कर सकते हैं मैं टेन इंटीजर का ले लेता हूं तो टेन कॉमा फोर इंटीजर है ना राइट अब अगर मैं लिख यहां लिखा भी है, error for object this, ठीक है, pointer being freed was not allowed, लेकिन इसको अब हम करते कैसे हैं, अगर हमें आगे लेके जाना है कोई भी pointer, तो इसलिए हम एक दूसरा pointer बना देंगे, मान लेते हैं, inch-rp, उसको हम ptr करेंगे, देखो, कोई error नहीं आया, या फिर हम यह भी कर सकते हैं, या कि ptr को अगर हम आगे बढ़ा रहे हैं, लेकिन हम free करते समय उस p पे जाए, जो कि हमने starting पे set कर दिया ठीक है starting पे set कर दिया तक कि अगर हम ptr को आगे कभी लेके भी जाए minus करे या plus करे minus भी कर सकते है ना आगे पीछे कहीं पे भी लेके जाए ptr को तो कोई बात नहीं हमारे पास अभी भी अपना head reserved है जहां से शुरू होता है वो तो अब run करते हैं देखो तो देखो कोई error नहीं आया इस case में भी right तो इसलिए ये चीज होती है हमारी और यहाँ पे हम देखते है थोड़ा ये कि memory reallocation, अब realloc का क्या मतलब होता है, मान लीजिये आपने malloc कर दिया, 8 integers कर दिये, पर आपको बाद में याद है, नहीं, मेरे को तो 15-20 integers चाहिए थे, तो इसलिए हम reallocation का इस्तेबाल करते है, it is used to dynamically change the memory allocation of a previously allocated memory, again, new size वो जो pointer था, मान लो PTR आपने दिया, बस यहाँ पे आप उसका नया size दे दो, सिंपल से हमारा काम हो जाता है, इसके बाद दिक्कते नहीं आती, तो realloc का यह काम होता है, जैसे कि example देखते हैं, मैंने लिखा inch star PTR is equal to 5 integers मैंने रखती है, 20 bytes allocate हो गए, 5 into 4, अब मैं अगर लिखता हूँ, pointer is equal to realloc, अपना pointer का नाम, और यहाँ पे लिख दो यार, 10 into size of int, तो अब 40 bytes allocate हो जाएगी, ढंग से बिल्कुल reallocate हो जाएगा, तो आप यह चीज़ भी कर सकते हो, अब यह देखो, note, the data stored remains intact, जस्ट द एलोकेटेड मेमोरी इस इंक्रीज्ड एंस इट अलाउज एलोकेशन अकॉर्डिंग टू आर नीट्स विदाउट मेकिंग अस टू लूस द डेटा स्टोर्ड इन द इनिशल 20 बाइट्स हैंस इट इस डिफरेंट फॉर्म मैल तब ही तो वहाँ 20 bytes एकठटा allocate कर देगा continuous memory में मान लेते हैं कि जब मैंने allocate की तो starting से पहले से ये कुछ allocated था ये भी मेरा कुछ allocated सा space इसलिए इसने ये चीज चुनी अगर मैं एकदम से कहता हूँ कि मुझे तो 40 बाइट चाहिए एकट्टा, तो क्या वो एकट्टे stored होगी?
या वो 40 की 40 कहीं और stored होगी? सोचने की बात है. चलिए देखते हैं.
ये चीज़ क्लियर हो जाएगी अगर मैं पहले का address print करा दू और reallocation के बाद address print करा दू. एक file बना लेते हैं, इसका राम रख देते है realloc.c और यहाँ पर चीज़ें को परिवार करते हैं. फिर यहाँ पर delete कर देते हैं इन चीजों को, ठीक है भाई, just delete की ज़रूरत तो ही, अगर मैं लिखता हूँ int star, ptr, is equal to malloc, और यहाँ पर हम लिख देते हैं, मैंने को 10 integers चाहिए एक बारी के लिए, 10 into 4 मैंने कर दिया, एक बारी के लिए हम print करा के देखते हैं, printf, percentage d, तो मैं address print करा रहा हूँ, फिर हम रिया लोकेट कर देते हैं, PTR is equal to, इसको हम ऐसे लिखते हैं, इसका तरीका यह होता है, क्योंकि रिया लोक अपने आप में एक pointer देगा, ठीक है, जो कि हम यहाँ पर store कर देंगे, अपने original वाले में, तो इसमें हम सबसे वहले देते हैं PTR, और फिर नया size अपना, तो जो एड्रेस है क्या वो चेंज हुआ नहीं हुआ फ्रेंड करते हैं बार यार यह दे देते हैं यहां पर ना पैक्सलेशन तो आप देख सकते हैं एड्रेस इंटाक्ट है मेरा भी जी रो एक्स 1566067 डी जी रो एक्स एड्रेस इंटाक्ट है मेरा भी जी रो छोड़ते हैं नियुक्त अब आप एक चीज देखोगे कि दोनों का एड्रेस हल आ गया यही बात मैं आपको समझाना चाहता था यही एक्जैक्टली बात मैं आपको समझाना चाहता थी के यह देखिए एक बार इसको ले आते हैं यहां पर क्यों हो रहा है कि इसके लिए तो यार यह प्रिंट हुआ और इसके लिए मेरा यह प्रिंट हुआ ठीक है चलिए इसको आते इसको ड्राइन करते जबरदस प्लीज बने रहना मेरे साथ कमांड शिफ्ट 4 और आज आते हैं थोड़ा इधर पे इसको ले आते हैं इधर देखिए इसको थोड़ा सा यहाँ पे जब मैंने मान लेते हैं यह मेरी पूरी की पूरी यार मेमरी है कुछ यह है मेरी मेमरी इन फैक्ट यार यहाँ पे मैंने टाइप कास्टिंग नहीं कर उसके बिना भी काम चल गया, मैंने अभी के लिए notice किया इस बात को, एक बार इधर आ जाते हैं यार, typecast भी कर देते हैं, ठीक है, usually it is a good practice to typecast, but anyways, run करते हैं एक बार, वही same result है, अलग ही आएंगे of course, ठीक है, पर आप सोचो कि ये अब इससे अलग क्यों आ रहा है, obviously जब मैं ह इंटीजर्स के लिए कुछ स्टोर हो गया जगह मान लेते हैं कुछ ऐसी जगह मेरी यार 10 इंटीजर्स की जगह स्टोर हो गयी मेरी कहीं पर भी अब यह देखता कहा है यह देखता है कि पूरी मेमोरी में कुछ खाली है नहीं अब मैं काम करता हूं ना मैं रेड से यह डिनो� ऐसी 10 integers मेरे यहाँ से store करने हैं अगर जब मैंने यह लिखा तो 10 integers यह कहाँ store करेगा यह देखेगा कि memory में खाली कहाँ है यह इस सा में को खाली लग रहा है तो मैं यहाँ पर ले आता हूँ ले आया यहाँ पर इसको ठीक है और अपने pointer को point करा दिया इधर अपने ptr को इसके first वाले यह 10 है समझ लो first पर point करा दिया अब मैंने जब यह print किया तो यह वाला address print हो गया ठीक है जब मैंने realloc लिखा pointer is equal to realloc pointer और 20,000 integers अगर मैंने 20,000 की जगह 20 लिखा होता, तो रियालोकेशन होती, ये कहता कि अच्छा रियालोकेशन हो रही है, मेरे को 20 और integer store, मतलब 10 और integer store करने है, अब 10 की जगह 20 रखना है, तो ये इसी को बढ़ा देगा, पर ये पहले चेक करता है कि आगे का खाली है, अगर है तो इसी को तो ये बहुत important एक चीज थी जो मैं आपको समझाना चाहिए आगे बढ़ते हैं और अपने last topic पर आ जाते हैं जो कि आज का है इसका नाम तो जल्दी से इसको निपटाते हैं, ज्यादा डिटेल में नहीं पढ़ेंगे क्योंकि जरूरत नहीं होती है, स्टार्ट करते हैं अपने फाइल हैंडलिंग को, तो आजाते हैं अगले टॉपिक पर, जिसके लिए आप बहुती ज़्यादा इंतजार कर रहे थे, तो यहाँ पर हम ओपनिंग, क्रिएटिंग, परफॉर्मिंग ओपरेशन्स और फाइल के बारे में बात करने वाले हैं, आप सबको पर पर्वाशन करने के लिए फाइल के लिए आपको पर्मानेंटली डाटा को पर्वाशन करना होगा, but this is the most commonly used file.txt एक और बहुती अच्छी observation अगर आप यहां जाते हो जब भी आप कोई file बनाते थे देखो इसका एक दूसरी चीज भी बन जाती थी मेरी ठीक है यह देखो अलग सी अब यह जो folders है कि यहां पे हम कोई text file भी बना सकते है यह देखे अगर मैं चाहूँ यहां पे मैं अगर new file बनाता हूँ मान लो.txt दोट सी की जगे तो क्या यह हो सकता है हाँ बन गया यह देखो यह टेक्स्ट फाइल बन चुकी है मान लो मैं यहां पर कुछ भी लिखता हूं हाई माय नेम इस वागफ एंड आई टीच मैथमाटिक्स ठीक है एंड कोडिंग अफ कॉर्स तो यह टेक्स्ट फाइल है यह भी आप यहां बना सकते हैं अब इसके ऊपर थोड़ा साम खेलने व राम क्या होती है यार, random access memory, ठीक है, ये, this is not permanent memory, not permanent, ये wipe off हो जाती है, it wipes off, ठीक है, जबकि ROM, hard disk SSD, HDD, SSD, ये हमारी permanent memory होती है यहाँ पे, ठीक है, ये non-volatile होती है, जबकि ये volatile होती है, but anyways, ये जो text file हमने बनाया रखी है, ये permanently store हो रखी है, हमारे computer में, यहां पर हम अपने फाइल लिखते हैं, यह देखिए, अगर मैं विशेष कोड बंद करके वापस खोलता हूं, तो यह तो कहीं नहीं जा रहा है, तो अभी के लिए तो यह टेक्स्ट में ही स्टोर हो रखा है, हमारे इस टेक्स्ट एडिटर विजुयल स्टूडियो अलग-अलग यहाँ पर कलर भी हो रही है, अलग-अलग चीजों के लिए, लेकिन आपको अपने बहुत-बहुत टेक्स्ट ही बोलेंगे तो यह देखिए, तो अब थोड़ा सा आगे बढ़ते हैं और देखते हैं file handling हम C language में कैसे करते हैं, तो हमारे पास यार दो basic operation होते हैं, read और write, read write का मतलब आपको अभी तक नहीं पता, तो मैं अगर छोटे से example से आपको बताऊं, कि आप अगर मान लिजे pen drive से या SSD से कुछ चीज computer में, pen drive से computer में copy क पर पप्पी कर रहे हो ठीक है तो इस पीड को क्या बोलते समझ दिना इस चीज को हम आपकी दो स्पीड लिखी होती है रीड स्पीड राइट स्पीड ऑफ द पेंड राइफ इसे पेंड राइफ में आपने देखा होगा या फिर सॉडिट स्टेट सब्सक्राइब कर रहा है तो यह सब्सक्राइब एप्लीट पर रिड और राइट दोनों करती है लेकिन यूजिली क्या होता है हमारा रीड स्पीड तो बहुत अच्छी होती है राइट स्पीड इतनी अच्छी नहीं होती यार यह देखिये न यह एसडी कार्ड रीडर है यह एसडी कार्ड है बहुत चोटा सा आपको पता नहीं दिख रहा होगा ठीक है तो यह जो एसडी कार्ड है यहां पर इस पर लिखा है कुछ ऐसा यहां पर एसडी कार्ड है इन फक्त तो कि आपको सम� और इसकी write speed है 70 MBPS इससे क्या पता लगता है इसकी read speed और write speed इसका मतलब कभी भी SD card से मैं कुछ copy करूँ computer में तो वो 270 MBPS में copy होगा क्यों? इसका मतलब यह होता है कि मैं SD card में से वो data read कर रहा हूँ तो उस reading की speed क्या है?
270 MBPS अब computer में कितनी वो क्या हो रहा है? computer में write हो रहा है समझो अगर मैं SD card से कुछ copy करके computer में डाल रहा हूँ यहां से वो read हो रहा है और यहां वो write हो रहा है अब usually computer की जो built in storage होती हो तो बहुत fast होती है इसलिए उसी speed में वो right हो जाएगा, दोनों की minimum speed select होती है वही अगर मैं SD card पे कुछ copy करूँ, अपने computer से, PC से या laptop से अगर मैं laptop से कुछ copy करूँ, arrow देखो, SD card में तो वो 70 mbps की speed से ही होगा बस क्यों क्योंकि इसकी right speed, इस पे लिखने की speed basically ही है वो हमारी 70 mbps है जैसे मेरा computer में read write speed दोनों 3000 mbps है तो वो तो बहुत ज्यादा instantaneous वाला काम है अब यहाँ पर यह देखो but we have two important operations as well यह तो basic operation है which is open and close मतलब पहले हम file को खोलेंगे कभी भी फिर file को बंद करेंगे आपको यह सबसे पहले चाहिए यह पहला काम है opening a file इसको हम ऐसे करते है f open लिखके file open इस command को हम देंगे और उससे पहले फाइल का हमें पॉइंटर बनाना होता है ताकि हम सारी चीजों को एक्सेस कर सके और उसको ऐसे बनाते हैं हम लिखते हैं कैपिटल में ध्यान रखना कैपिटल में लिखते हैं फाइल स्टार पॉइंटर यहां लेकिन यह फोपन जो भी हमें फाइल अगर यहाँ पर आप देख सकते हो इसी फोल्डर के अंदर C last lecture में मैंने आइएस राघव.txt यह खोल रखा है एक बार इसको हम बंद कर देते हैं ठीक है और in fact सारी फाइल बंद कर देते हैं नहीं आप प्री प्रोसेसर मैक्रो स्विच कैलकुलेटर डायनेमिक में विशेष यह सब कुछ पंच करते हैं कैलकुलेटर भी और एक बारी यह हम अपनी फाइल बना लेते हैं यहां पर इसका नाम देते हैं फाइल हैंडलिंग डॉट सी प्रोग्राम बनाते हैं ठीक है यहाँ पर एक बार एक लिए सारी चीज़ें हम copy कर लेते हैं, but चलो कोई नहीं, include stdo.h int main, फिर यहाँ पर हम लिख देते हैं, अगर file आपको open कर रही है कोई, इसी folder के अंदर, file handling में, मेरे पास file already पढ़ी है हमारी, यही, तो इसमें आपको दिखाई थी, कहां गई यार, अच अब एक बार अपना code करके देखते हैं और खोल के देखते हैं अपनी file यहाँ पे, तो मैं एक file का pointer बनाता हूँ, ठीक है, यह capital file हमारा data type की तरह है आप इसको समझ सकते हो, ठीक है, file pointer is equal to, मैं लिखता हूँ fopen, और यहाँ पे अपने file का नाम देता हूँ, जैसे, यहाँ पे एक file थी मेरी, raghav.txt, और यहाँ पे था r, तो अब क्या हुआ है, यहाँ पे यह file खुल गई है, मतलब, अब हम operations perform कर सकते हैं such that reading, writing and modifying या फिर जितनी भी चीजें ओता writing में आ जाएगा, तो पहले हमें हमेशा अपनी file खोलनी पड़ती है, अगर मैं fopen नहीं लिखता और directly किसी file के साथ हरकते करना start करता हूँ तो वो काम नहीं करेगा, तो अपने program के अंदर हमें सबसे पहले file खोलन आप सबसे पहले हम एक काम करते हैं ना, रीड करके देखते हैं इस फाइल में, यह जो रागव टेक्स्ट है, इसको खोल लेते हैं साइड में रखके, यहाँ देखो, इसमें हमने क्या लिखा है, पहली लाइन में लिखा है, Hi, my name is Raghav, और दूसरी लाइन में लिखा है, and I teach mathematics अब मैं यहाँ पर क्या करूँगा, यहाँ पर मैं अपने pointer को set करा सकता हूँ, और अपने जी जो care string है, जो हमने खुद से बनाई है, इसके अंदर मैं store करा सकता हूँ वो सारी चीजे, जो कि हमारी file के अंदर यहाँ पर present है, वो करते कैसे, यहाँ देखिए यार, इसके लिए यहाँ पे मैं लिख रहा हूँ, f gets, this is not equal to null, यहाँ पे आपको in fact लगाना पड़ता है यार, if का pointer लगाना पड़ता है, ठीक है, if ये, और फिर आप सीधा print कर सकते हो ये चीज, करके दिखा देते हो ना यार मेरे को यहाँ पे, यहाँ पे आप string देते हो अपनी ये वाली, ठी ठीक है और यहां पर आप लिखोगे कि हमारा सबसे पहले स्ट्रिंग का नाम ठीक है फिर आप देते हो यही हम सौ देते हैं और हम अपना देते हैं पॉइंटर जहां से हमें ल तो is not equal to null यहाँ पे यह लिखना है हमें और यह पूरी condition डालनी है हमें समझाता हूँ अगर यह मेरा null नहीं है तो print कर दो किसको print कर दो string को तो कहां गया हमारा यह percentage s होता है percentage s str अब इससे देखना होगा क्या अच्छे से दिखाता हूँ, यहाँ पे लिखा है मेरा, my name is Raghav, first line, teach mathematics, second line, मैं run करता हूँ, hi, my name is Raghav, okay, तो इस line से पहली line ही print हो रही है, दूसरी line print नहीं हो रही है, अगर मैं if की जगे, अगर मैं if की जगे while लगा दू, तो आप देखोगे, दोनों चीजे print हो गई, ठीक ह आपको यह चीज़ समझ आ रही है और अगली line में ही आ रही है इनको पता है यहाँ पे मैंने backslash n ही दे रखा था ठीक है इसका मतलब यह समझ गए automatically तो यह सारी चीज़ आ गई तो while करके आप सारी चीज़े print करा सकते हो और if statement से आप सिर्फ यहाँ पे यहाँ पे यह चीज़ print करा सकते हो ऐसा हो इसलिए रहा है basically जो हमारा pointer है पहले word को point कर रहा हुआ, in fact पहले character को जो कि high edge था, यह आगे बढ़ते जा रहे हैं, check करते जा रहे हैं, यह null तो नहीं है, और उस value को fetch करता जा रहा है, लेकिन एक sentence के लिए हमारा syntax यह रहता है, but yes, this is the तरीका to get the string, ठीक है, f gets, f puts, string के अंदर ही, देस्टिनेशन लिखो, सोर्स हमारा पॉइंटर है, पॉइंटर में यह पूरी फाइल है, कैद है हमारी फाइल, और यहाँ पर लिख दो कि कितना है, अगर माललो 10, मैं यहाँ पर 10 लिख दो, तो अब देखना, रन करता हूँ, हाई, माई, नाई आ गया सिर्फ, ठीक है, क्यो हाइ माइ नेम राबू, जितने है उतना इस्तेमाल कर सकते हैं इस चीज को राइट, तो ये हमारी चीज है एक और चीज अगर मैं यहाँ 100 की जगह 10 ले लूँ तो मेरे स्ट्रिंग के अंदर स्टोर ही कितना हो पाएगा मैक्स टू मैक्स हाइ माइ एने तो यह आपको दिखान रखना है कि आपको इन्हां पर चाहिए कि आपको चाहिए आप पूरा का पूरा प्रिंट करा सकते हो, अपनी फाइल को रीड कर रहे हैं अभी हम अब हम देखते हैं कि अपने फाइल को हम राइट कैसे कर सकते हो बट उससे पहले फाइल की अगर मैं आपके सामने क्रिएशन समझा हूँ क्रिएटिंग आ फाइल यहां से करके करते हैं यहां से भी आप यह काम कर सकते हैं बड़े ध्यान से सुनना इस चीज को और अगर मैं लिखूं कोई भी मेरे को एक नई फाइल बना लिया मान लेते हैं पी डब्ली और यहां पर लिख दो डब्ली राइट मोड अब देखना मैं रन किया अब एक कमाल की चीज देखना इधर देखो अपने सी के लास्ट लेक्� पूरा फोल्डर ताकि आपको सारी चीजें नजर आते रहे हैं यह देखो यहां पीडब्लू यहां आगा गए यहीं अगर मैं एक दूसरी फाइल बनाओ तो देखो एक चीज हुई यहां पर चीज आगा फाइल ठीक है तो ऐसे हम क्रिएट कर सकते हैं अपनी फाइल्स को बहुत ही यह बेसिकली प्रिंट एफ और स्कैन एफ है, इन फाक्ट हम F, स्कैन एफ और F, प्रिंट एफ भी कर सकते हैं, यूज लेकिन यह देखते हैं तो एक तो क्रिएट भी हो गई अब अगर मैं यहां पर लिखूं क्या स्टियर और इसका साइड देने की जरूरत है नहीं बैक यहां पर और मैं यहां पर लिख देता हूं कि भाई आई एम और चलो यह मैं लिख देता हूं य पीडब्लू इस तो बेस्ट प्लैटफॉर्म यह क्या लिखो ठीक है बाइस प्लेसमेंट लगेगी है इसे ठीक है प्लेसमेंट लगेगी यहीं से राइट यह मैंने बना दी अपनी एक स्ट्रिंग अब अगर मेरे को इसको अपनी सीडब्लू की फाइल अभी लाली है बहुत ध्यान से देखो अब अगर मैं यहां पर लिखता हूं मैं यहां पर एक सिंपल सी चीज लिखता हूं एफ पुट्स पुट्स ही नहीं एफ पुट्स और यहां पर यह देखो बोल भी रहा है ये देखो, constant character वाली चीज़ और यहाँ पे file pointer हमारा, तो अगर यहाँ पे मैं लेको str अपना string दे दू, इस ptr में, file ptr में, तो अब देखना, अब मैं इसको पहले run करता हूँ, फिर क्या होगा, but it is always a good practice, सबसे पहली बात तो, कि जब आपने file को open किया है, तो it is always a good practice to f close this file, तो इसको close भी हार कर देना चाहिए आपको, अब एक बार run करते हैं, run किया, code हो गया, magic दिखाऊं, प्लेसमेंट लगीगी यहाँ से ठीक है तो ऐसे आर आप रन करते हैं इस चीज को सिमिलरली अगर मैं यहां पर सिर्फ यहां इसे लिख दो प्लेसमेंट लगीगी सिर्फ यहां इसे ऐसा नहीं है वैसे तो यार रन करो तो देखो मॉडिफाइड भी हो यानि कि हम changes कर सकते हैं, इससे हम दो चीजे करते हैं, जब मैं ये लिखता हूँ तो create हो जाती है एक file, अगर already created नहीं है, ठीक है, अगर मैं सिर्फ कोई भी नाम लिखके, w लिख दू, तो चेक करेगा कि पहले file है, नहीं है, create कर दी, अगर exist कर रही है file, तो ठीक है, कोई बात you must always close a file after you are done with it तो यही है यार हमारा file handling simple सा कुछ इसमें खास नहीं है हमने क्या पढ़ा यार हमने देखा कि F open, file pointer फाइल pointer ऐसे बनाते हैं F open करते हैं, फाइल का name read mode या write mode में रखते हैं फिर हमने देख लिया कि F gets क्या करता है F gets में हमेशा याद रखना यह वाला syntax मत भूलना कभी क्या है तो देखो F gets का syntax ऐसे होता है प्रिंट करानी हो जो भी आपने फाइल में लिखा है तो अगर आपको single line प्रिंट करानी हो तो आप लिखोगे if यहाँ पर आप लिख दोगे f gets ठीक है str उसका कितना size लेना है आपको यह जो second चीज़ होती है इसका मतलब होता है कि कितनी length आपको first sentence में से भी कितना तक आपको लेना है क्या आ रहा है str ठीक है एक खाली string बना लाइक बारी के लिए ठीक है तो आप इस टेस्ट यहां पर लिख दोगे आप पीटी आर नॉट इक्वल टू नल यह फॉरमेट होता है तो आप यहां से देखना यह चीज है यह कंडीशन है बेसिकली यह एफ गेट वाली नॉट इक्वल टू नल जब तक नहीं होती तो आप यहां पर लिख दोगे प्रिंट एफ प्रिंट अपनी स्ट्रिंग को ही कराएंगे उसके अंदर वैल्यू स्टोर होती जा रही है तो ठीक है यार, आज की वीडियो के लिए इतना ही था, आज हमने अलग-अलग ऐसे टॉपिक्स पढ़ लिये, जो मेरे को यूजलेस ले सकते हैं, टू बी ओनिस्ट, लेकिन कभी-कभी आपके हो सकता है एग्जाम्स में आ जाये, थोड़ी-बहुत चीजे, रट्टा है, थो लेकिन comments में जरूर लिख देना और पूरी C programming series अगर आपने अच्छे से देख लिया है तो I hope यार आपको actually में बहुत साथा benefit मिला हो इस series से ठीक है काफी time से आपसे एक बात कहनी थी कहनी पाये थे which is closing a file नहीं thank you so much आपने काफी ज़ादा प्यार दिखाया हमारी videos को C programming में specifically काफी अच्छे views आये और ऐसे ही यार पढ़ते रहे ये bye प्रश्न