सी भाषा में लिखें () फ़ंक्शन

Si Bhasa Mem Likhem Fanksana



प्रोग्रामिंग में फ़ाइल प्रबंधन एक ऐसा कार्य है जिसमें प्रोग्रामर को धाराप्रवाह होना चाहिए। विभिन्न खुले, पढ़ने और लिखने के कार्यों का ज्ञान आवश्यक है क्योंकि फाइलों में संग्रहीत जानकारी को संग्रहीत करने या निपटाने के लिए हमें हमेशा उनकी आवश्यकता होती है।

इस Linux संकेत लेख में, आप सीखेंगे कि फ़ाइलों को लिखने के लिए राइट () फ़ंक्शन का उपयोग कैसे करें।







हम इस एला, इसके सिंटैक्स, कॉल विधि, इनपुट और आउटपुट तर्कों, प्रत्येक मामले में इसे स्वीकार किए जाने वाले डेटा के प्रकार और इसे सही तरीके से घोषित करने के तरीके के बारे में सब कुछ समझाएंगे।



फिर, हम इस फ़ंक्शन के उपयोग को व्यावहारिक उदाहरणों में डालकर जो हमने सीखा है उसे लागू करते हैं, जिसे हमने आपके लिए कोड स्निपेट और छवियों के साथ तैयार किया है, जो सी भाषा में लिखने () का उपयोग दिखाते हैं।



लिखने () फ़ंक्शन के उपयोग के बारे में आपको व्यापक ज्ञान प्राप्त करने के लिए, हमने एक विशेष खंड जोड़ा है जो इस फ़ंक्शन का उपयोग करते समय होने वाली व्यक्तिगत त्रुटियों के साथ-साथ उनकी पहचान और पहचान का वर्णन करता है, ताकि आपके पास उनकी घटना के मामले में त्वरित समाधान के लिए आवश्यक तकनीकें।





सी लैंग्वेज में राइट () फंक्शन का सिंटैक्स

int यहाँ लिखना ( int यहाँ एफडी , खालीपन * buf , size_t एन ) ;

सी लैंग्वेज में राइट () फंक्शन का विवरण

राइट () फ़ंक्शन एक खुली फ़ाइल को लिखता है। यह फ़ंक्शन बफर की सामग्री को लिखता है जिसे 'एफडी' इनपुट तर्क में इसके वर्णनकर्ता द्वारा निर्दिष्ट फ़ाइल में 'buf' द्वारा इंगित किया जाता है। फ़ाइल में लिखे जाने वाले ब्लॉक का आकार 'एन' इनपुट तर्क में निर्दिष्ट होना चाहिए।

राइट () फ़ंक्शन के साथ लिखने में सक्षम होने के लिए, फ़ाइल को ओपन () फ़ंक्शन के साथ खोला जाना चाहिए और O_RDONLY या O_RDWR विशेषताओं में निर्दिष्ट होना चाहिए। अन्यथा, इस फ़ंक्शन का कोई प्रभाव नहीं पड़ता है।



यदि कॉल सफल होता है, तो यह दर्ज किए गए वर्णों की संख्या लौटाता है। यदि लिखते समय कोई त्रुटि होती है, तो यह एक परिणाम देता है जो -1 के बराबर होता है। पहचान कोड जो त्रुटि को इंगित करता है, उसे errno वैश्विक चर से पुनर्प्राप्त किया जा सकता है जिसे 'errno.h' शीर्षलेख में परिभाषित किया गया है।

बाद में, आपको एक खंड मिलेगा जहां हम समझाएंगे कि इस फ़ंक्शन की सबसे सामान्य त्रुटियों का पता कैसे लगाया जाए और उनकी पहचान कैसे की जाए।

राइट () फ़ंक्शन को 'unistd.h' हेडर में परिभाषित किया गया है। फ़ाइल खोलने के लिए विशेषताओं और मोड को परिभाषित करने वाले झंडे 'fcntl.h' में परिभाषित किए गए हैं। खुले () और लिखने () कार्यों का उपयोग करने के लिए, आपको इन शीर्षकों को अपने कोड में निम्नानुसार शामिल करना होगा:

#शामिल

#शामिल

सी लैंग्वेज में राइट () फंक्शन का उपयोग करके फाइल में कैसे लिखें

इस उदाहरण में, हम 'example.txt' नामक एक खाली टेक्स्ट फ़ाइल लिखते हैं जिसे हमने पहले 'दस्तावेज़' निर्देशिका में बनाया था।

पहला कदम आवश्यक शीर्षलेख सम्मिलित करना है। मुख्य () फ़ंक्शन के अंदर, फ़ाइल को ओपन () फ़ंक्शन के साथ खोलें। ऐसा करने के लिए, हमें 'एफडी' पूर्णांक घोषित करने की आवश्यकता है जो फ़ाइल डिस्क्रिप्टर के रूप में कार्य करता है, और 1024-वर्ण 'बफ' बफर सरणी जिसमें पाठ शामिल है जिसे हम फ़ाइल में लिखना चाहते हैं। इस बफ़र में, हम GCC मैन पेज के पहले पैराग्राफ को 'example.txt' फ़ाइल में लिखने के लिए स्टोर करते हैं।

रीड / राइट मोड में ओपन () फ़ंक्शन के साथ फ़ाइल खोलने के बाद, हम राइट () फ़ंक्शन को कॉल करके फ़ाइल में लिखते हैं और 'fd' फ़ाइल डिस्क्रिप्टर को पहले इनपुट तर्क के रूप में पास करते हैं, दूसरे के रूप में 'buf' पॉइंटर तर्क, और तीसरे तर्क के रूप में सरणी में निहित स्ट्रिंग का आकार, जिसे हम strlen() फ़ंक्शन के साथ प्राप्त करते हैं। यहाँ इस उदाहरण के लिए कोड है:

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

खालीपन मुख्य ( )

{

int यहाँ एफडी ;

चार बफर [ 1024 ] = 'जब आप GCC का आह्वान करते हैं, तो यह सामान्य रूप से प्रीप्रोसेसिंग, संकलन, असेंबली और लिंकिंग करता है। समग्र विकल्प आपको इस प्रक्रिया को एक मध्यवर्ती चरण में रोकने की अनुमति देते हैं। उदाहरण के लिए, -c विकल्प कहता है कि लिंकर को न चलाएं। फिर आउटपुट में शामिल हैं असेंबलर द्वारा ऑब्जेक्ट फाइल आउटपुट।' ;

एफडी = खुला ( 'दस्तावेज़/example.txt' , O_RDWR ) ;

लिखना ( एफडी , और बफर , strlen ( बफर ) ) ;

बंद करना ( एफडी ) ;

}

निम्नलिखित आकृति में, हम इस कोड के संकलन और निष्पादन को एक साथ खोली गई फ़ाइल के साथ देखते हैं जो कि राइट () फ़ंक्शन द्वारा लिखी गई है:

सी लैंग्वेज में राइट () फंक्शन के साथ फाइल के अंत में टेक्स्ट कैसे जोड़ें

जब कोई फ़ाइल O_WRONLY या O_RDWR फ़्लैग निर्दिष्ट करके खोली जाती है, तो कर्सर पहली स्थिति में कूद जाता है और वहाँ से लिखना शुरू कर देता है।

किसी फ़ाइल के अंत में एक पाठ जोड़ने के लिए, इसे O_WRONLY या O_RDWR फ़्लैग और O_ APPEND फ़्लैग के बीच खुले () फ़ंक्शन के इनपुट फ़्लैग तर्क में निर्दिष्ट किया जाना चाहिए, जब फ़ाइल खोली जाती है। इस तरह, कर्सर को फ़ाइल के अंत में रखा जाता है और वहीं से लेखन शुरू होता है। साथ ही, फ़ाइल को fcntl() फ़ंक्शन के साथ खोले जाने के बाद विशेषताएँ और लेखन मोड बदला जा सकता है।

निम्नलिखित उदाहरण में, आप एक कोड देख सकते हैं जो फ़ाइल के अंत में एक टेक्स्ट जोड़ता है जिसे हमने पिछले उदाहरण में लिखा था:

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

खालीपन मुख्य ( )

{

int यहाँ एफडी ;

चार बफर [ 1024 ] = 'यह पाठ जोड़ा गया है। यह पाठ जोड़ा गया है।' ;

एफडी = खुला ( 'दस्तावेज़/example.txt' , O_RDWR | O_APPEND ) ;

लिखना ( एफडी , और बफर , strlen ( बफर ) ) ;

बंद करना ( एफडी ) ;

}

निम्न चित्र जोड़ा गया पाठ दिखाता है। जैसा कि आप देख सकते हैं, इस प्रारंभिक विधि के साथ, फ़ाइल में लिखे गए अंतिम वर्ण की स्थिति पर लिखना () फ़ंक्शन लिखना शुरू करता है:

सी भाषा में राइट () फ़ंक्शन का उपयोग करते समय होने वाली त्रुटियों का पता कैसे लगाएं और पहचानें

लिखने का उपयोग () विभिन्न त्रुटियां उत्पन्न कर सकता है। जब ऐसा होता है, तो यह फ़ंक्शन -1 के बराबर परिणाम देता है।

यह निर्धारित करने का सबसे आसान तरीका है कि कोई त्रुटि हुई है या नहीं, 'अगर' स्थिति का उपयोग करना है जहां स्थिति -1 का रिटर्न मान है। अब, देखते हैं कि कोई त्रुटि हुई है या नहीं, यह निर्धारित करने के लिए आप इस विधि का उपयोग कैसे कर सकते हैं:

int यहाँ एन ;

एन = लिखना ( एफडी , और बफर , strlen ( बफर ) ) ;

अगर ( एन == - 1 ) {

printf ( 'फ़ाइल लिखने का प्रयास करते समय एक त्रुटि हुई।' ) ;

}

यदि राइट () फ़ंक्शन एक त्रुटि के साथ वापस आता है, तो यह 'if' स्टेटमेंट में बदल जाता है और संदेश को प्रिंट करता है, ' फ़ाइल लिखने का प्रयास करते समय एक त्रुटि हुई '।

जब कोई त्रुटि होती है, तो एक संख्यात्मक कोड स्वचालित रूप से errno वैश्विक चर में संग्रहीत होता है जिसे 'errno.h' शीर्षलेख में परिभाषित किया जाता है। इस कोड का उपयोग होने वाली त्रुटि की पहचान करने के लिए किया जा सकता है।

निम्नलिखित त्रुटियों का एक अंश है जो राइट () फ़ंक्शन उत्पन्न कर सकता है और जो 'errno.h' हेडर में परिभाषित किया गया है, साथ ही प्रत्येक त्रुटि और संबंधित पूर्णांक मान का संक्षिप्त विवरण:

परिभाषा त्रुटि में मान गलती
फिर से ग्यारह पुनः प्रयास करें।
ईबीएडीएफ 9 गलत फ़ाइल संख्या।
EDESTADDRREQ 89 गंतव्य पता आवश्यक है।
एडक्वॉट 122 कोटा पार हो गया।
गलती 14 गलत पता।
EFBIG 27 फ़ाइल बहुत बड़ी है.
EINTR 4 सिस्टम कॉल बाधित.
एकल विकल्प 22 अमान्य दलील।
ईआईओ 5 आई/ओ त्रुटि।
ईएनओएसपीसी 28 डिवाइस पर जगह समाप्त।
अपर 1 संचालन की अनुमति नहीं है।

एक त्रुटि की पहचान करने का सबसे आसान तरीका एक स्विच खोलना है जहां इरनो चर कूद की स्थिति है और प्रत्येक मामला एक त्रुटि परिभाषा है।

अगला, आइए एक उदाहरण देखें जहां हम एक नकारात्मक चिह्न के साथ एक विवरणक दर्ज करने का प्रयास करते हैं, जिसके परिणामस्वरूप एक त्रुटि होती है। किसी त्रुटि की पहचान करने के लिए, हम 'यदि' स्थिति का उपयोग करते हैं जिसे हमने पिछले स्निपेट में देखा था। इसकी पहचान करने के लिए, हम तीन सबसे आम त्रुटियों के साथ एक स्विच खोलते हैं जो यह फ़ंक्शन उत्पन्न कर सकता है।

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

खालीपन मुख्य ( )

{

int यहाँ एफडी ;

int यहाँ एन ;

चार बफर [ 1024 ] = 'हैलो वर्ल्ड' ;

एफडी = खुला ( 'दस्तावेज़/example.txt' , O_RDWR ) ;

एन = लिखना ( - 2 , और बफर , strlen ( बफर ) ) ;

अगर ( एन == - 1 ) {

बदलना ( errno ) {

मामला ईबीएडीएफ : {

printf ( 'खराब फ़ाइल संख्या। त्रुटि: %i \एन ' , errno ) ;

तोड़ना ; }

मामला एकल विकल्प : {

printf ( 'अवैध तर्क। त्रुटि: %i \एन ' , errno ) ;

तोड़ना ; }

मामला ईआईओ : {

printf ( 'I/O त्रुटि। त्रुटि: %i \एन ' , errno ) ;

तोड़ना ; }

}

}

}

जैसा कि हम निम्नलिखित आकृति में देख सकते हैं, जब एक अमान्य डिस्क्रिप्टर को इनपुट तर्क के रूप में पारित किया जाता है, तो राइट () फ़ंक्शन एक त्रुटि देता है। इरनो वेरिएबल से प्राप्त मान को जंप स्थिति के रूप में उपयोग किया जाता है जो हमें ईबीएडीएफ मामले में प्रवेश करते समय त्रुटि की पहचान करने की अनुमति देता है।

निष्कर्ष

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

यह देखने में आपकी मदद करने के लिए कि कैसे लिखें () काम करता है, हमने इस फ़ंक्शन के उपयोग को कोड और छवियों के साथ व्यावहारिक उदाहरणों में लागू किया है जो इस और अन्य फ़ाइल प्रोसेसिंग फ़ंक्शंस का उपयोग दिखाते हैं।

हमने आपको यह भी दिखाया कि फ़ाइल के आरंभ या अंत में पाठ सम्मिलित करने के लिए फ़ाइल ओपन मोड का चयन कैसे करें, और इन विशेषताओं को बदलने के लिए कौन से कार्य उपलब्ध हैं।