Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी में रीड() सिस्टम कॉल में महारत हासिल करना:एक व्यापक गाइड

<पी> सी भाषा में कई फ़ंक्शन हैं जो फ़ाइलों को पढ़ने की अनुमति देते हैं, सबसे अधिक उपयोग किए जाने वाले रीड() और फ़्रेड() फ़ंक्शन हैं। यह भाषा getchar() जैसे फ़ंक्शंस के साथ वर्ण दर वर्ण पढ़ने की विधियां भी प्रदान करती है।

<पी> फ़ाइल प्रोसेसिंग फ़ंक्शंस, उनकी कॉल विधियों, इनपुट और आउटपुट तर्कों आदि को धाराप्रवाह रूप से उपयोग करने के लिए जानना महत्वपूर्ण है क्योंकि वे सिस्टम में संग्रहीत जानकारी को संग्रहीत करने और निपटाने के लिए प्रोग्रामर के लिए उपलब्ध संसाधन हैं।

<पी> इस Linuxhint आलेख में, आप सीखेंगे कि फ़ाइलों को पढ़ने के लिए read() फ़ंक्शन का उपयोग कैसे करें।

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

<पी> फिर हमने इस सुविधा का उपयोग करके जो सीखा है उसे व्यावहारिक उदाहरणों में लागू करते हैं।

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

सी भाषा में रीड() फ़ंक्शन का सिंटैक्स

<पी>  
size_t read(int fd, void *buf, size_t गिनती);
 

रीड() फ़ंक्शन का विवरण

<पी> रीड() फ़ंक्शन खुली फ़ाइल की सामग्री को पढ़ता है जो "एफडी" इनपुट तर्क में इसके डिस्क्रिप्टर द्वारा निर्दिष्ट है। यह फ़ंक्शन फ़ाइल की सामग्री को बफर में पढ़ता है और कॉपी करता है जिसे बाइट्स की गिनती संख्या के साथ "बफ़" द्वारा इंगित किया जाता है। "एफडी" पहचानकर्ता एक पूर्णांक है जो फ़ाइल खोले जाने पर ओपन() फ़ंक्शन के परिणाम के रूप में लौटाया जाता है।

<पी> यदि रीड() फ़ंक्शन सफलतापूर्वक लौटता है, तो यह पढ़े गए बाइट्स की संख्या लौटाता है। 0 के बराबर परिणाम का मतलब है कि फ़ाइल को अंत तक पढ़ा गया था, और -1 का मतलब है कि कोई त्रुटि हुई।

<पी> विशिष्ट त्रुटि को वैश्विक "errno" वेरिएबल से उसका कोड पुनर्प्राप्त करके पहचाना जा सकता है। बाद में, आपको एक अनुभाग मिलेगा जो उन त्रुटियों का वर्णन करता है जो रीड() फ़ंक्शन का उपयोग करते समय हो सकती हैं और उन्हें पहचानने और पहचानने की तकनीकें।

<पी> रीड() फ़ंक्शन को "unistd.h" हेडर में घोषित किया गया है। इसका उपयोग करने के लिए, आपको इस फ़ाइल को अपने कोड में निम्नानुसार शामिल करना होगा:

रीड() फ़ंक्शन के साथ किसी फ़ाइल को कैसे पढ़ें

<पी> इस उदाहरण में, हम बताएंगे कि open() और read() फ़ंक्शन का उपयोग करके किसी फ़ाइल को कैसे खोलें और पढ़ें।

<पी> इस उद्देश्य के लिए, हमने पहले लिनक्स प्रबंधक के माध्यम से "example.txt" नाम के साथ एक टेक्स्ट फ़ाइल बनाई और इसे "दस्तावेज़" निर्देशिका में सहेजा। फिर, हमने इसमें इस लेख का पहला पैराग्राफ लिखा।

<पी> फ़ाइल को पढ़ने के लिए कोड विकसित करने में पहला कदम आवश्यक हेडर को शामिल करना और एक मुख्य() फ़ंक्शन बनाना है जो एक खाली मान लौटाता है। हम इसमें "एफडी" पूर्णांक को परिभाषित करते हैं जो फ़ाइल डिस्क्रिप्टर के रूप में कार्य करता है, एक 1024 वर्ण बफर जिसे "बफ़" कहा जाता है जहां रीड() द्वारा पढ़ी गई जानकारी संग्रहीत होती है। सरणी पथ उस फ़ाइल का पथ और नाम संग्रहीत करता है जिसे हम पढ़ना चाहते हैं।

<पी> आवश्यक वेरिएबल्स को परिभाषित करने के बाद, हम फ़ाइल को खोलने के लिए ओपन() फ़ंक्शन को कॉल करते हैं। हम पहले इनपुट तर्क के रूप में फ़ाइल के पथ और नाम के साथ पथ सरणी को पास करके और दूसरे तर्क के रूप में O_RDONLY ध्वज को निर्दिष्ट करके इस फ़ंक्शन को कॉल करते हैं। आउटपुट तर्क के रूप में, हम "एफडी" पूर्णांक पास करते हैं जहां ओपन() डिस्क्रिप्टर लौटाता है जिसे हम फ़ाइल को पढ़ने के लिए उपयोग करते हैं। <पी> एक बार जब हमारे पास फ़ाइल खुल जाती है, तो हम रीड() फ़ंक्शन को कॉल करके और "एफडी" डिस्क्रिप्टर को पहले तर्क के रूप में पास करके इसकी सामग्री पढ़ते हैं जो ओपन() फ़ंक्शन द्वारा लौटाया जाता है। दूसरे तर्क के रूप में, हम पॉइंटर को "बफ़" बफ़र पर पास करते हैं जहाँ हम पढ़ने के लिए सामग्री संग्रहीत करते हैं और अंत में बफ़र का आकार, जो इस मामले में, 1024 बाइट्स है।

<पी> फिर हम कमांड कंसोल में बफ़ में संग्रहीत सामग्री को प्रदर्शित करने के लिए printf() फ़ंक्शन का उपयोग करते हैं। इस उदाहरण के लिए पूरा कोड यहां दिया गया है:

<पी> #शामिल
#शामिल करें
#शामिल
#शामिल

<पी> पूर्णांक मुख्य()
{  
   इंट एफडी;
   चार बफ़[1024];
   चार पथ[] ="दस्तावेज़/example.txt";
   एफडी =खुला(पथ, O_RDONLY);
   पढ़ें(एफडी, बफ़, 1024);
   प्रिंटफ ("\n\n%s\n\n",बफ);
   }

<पी> निम्नलिखित चित्र में, हम इस कोड का संकलन और निष्पादन देखते हैं। जैसा कि हम देख सकते हैं, read() "example.txt" फ़ाइल की संपूर्ण सामग्री को "बफ़" में डालता है और printf() फ़ंक्शन इसे कमांड कंसोल पर प्रिंट करता है:

<पी> सी में रीड() सिस्टम कॉल में महारत हासिल करना:एक व्यापक गाइड

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

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

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

<पी> पूर्णांक n;
एन =पढ़ें(एफडी, बफ़, 1024);
अगर (एन ==-1){
     प्रिंटफ ("फ़ाइल को पढ़ने का प्रयास करते समय एक त्रुटि उत्पन्न हुई।");
     }

<पी> यदि रीड() फ़ंक्शन किसी त्रुटि के साथ लौटता है, तो यह "if" कथन में परिवर्तित हो जाता है और "फ़ाइल को पढ़ने का प्रयास करते समय एक त्रुटि उत्पन्न हुई" संदेश प्रिंट करता है।

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

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

परिभाषामानत्रुटिमें त्रुटिदोबारा 11 पुनः प्रयास करेंEBADF 9गलत फ़ाइल नंबरEDESTADDRREQ 89गंतव्य पता आवश्यकईफॉल्ट 14गलत पताEFBIG 27फ़ाइल बहुत बड़ीEINTRहै 4सिस्टम कॉल बाधितEINVAL 22अमान्य तर्कईआईओ 5 I/O त्रुटिEPERM 1ऑपरेशन की अनुमति नहीं है <पी> त्रुटि की पहचान करने का सबसे आसान तरीका एक स्विच खोलना है जहां "त्रुटि" चर जंप स्थिति है और प्रत्येक मामला एक त्रुटि परिभाषा है।

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

<पी> #शामिल
#शामिल करें
#शामिल
#शामिल
#शामिल

<पी> पूर्णांक मुख्य()
{  
   इंट एफडी,एन;
   चार बफ़[1024];
   चार पथ[] ="दस्तावेज़/example.txt";
   fd =खुला(पथ, O_RDONLY);

<पी>    n =पढ़ें(99999999, बफ़, 1024);
   अगर (एन ==-1){
      स्विच(त्रुटि नहीं){
    मामला ईबीएडीएफ:{
                  प्रिंटफ ("खराब फ़ाइल नंबर। त्रुटि:%i\n", त्रुटि);
                  तोड़ना;}
    मामला EINVAL:{
                   प्रिंटफ ("अमान्य तर्क। त्रुटि:%i\n", त्रुटि);
                   तोड़ना;}
    केस ईआईओ:{
                प्रिंटफ ("I/O त्रुटि। त्रुटि:%i\n", त्रुटि);
                तोड़ना;}
    }
 }
}

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

<पी> सी में रीड() सिस्टम कॉल में महारत हासिल करना:एक व्यापक गाइड

निष्कर्ष

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

<पी> इस फ़ंक्शन का उपयोग करते समय संभावित त्रुटि का निवारण करने के लिए आवश्यक साधन प्राप्त करने के लिए, हमने एक विशेष अनुभाग जोड़ा है जो त्रुटियों का पता लगाने और पहचानने के लिए सी भाषा द्वारा प्रदान की जाने वाली विधियों की व्याख्या करता है।


  1. एंड्रॉइड में अपरिवर्तनीय सूची बनाने के लिए फैक्टरी विधि? एंड्रॉइड में अपरिवर्तनीय सूची बनाने के लिए फैक्टरी विधि?

    यह उदाहरण एंड्रॉइड में अपरिवर्तनीय सूची बनाने के लिए फ़ैक्टरी विधि के बारे में प्रदर्शित करता है। चरण 1 - Android Studio में एक नया प्रोजेक्ट बनाएं, File New Project पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। उप

  1. Android में Collections.reverse () का उपयोग करके सूची मानों को उल्टे क्रम में कैसे प्रिंट करें? Android में Collections.reverse () का उपयोग करके सूची मानों को उल्टे क्रम में कैसे प्रिंट करें?

    यह उदाहरण दर्शाता है कि Android में Collections.reverse() का उपयोग करके सूची मानों को उल्टे क्रम में कैसे प्रिंट किया जाए। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/act

  1. टिंकर बेल () विधि टिंकर बेल () विधि

    Tkinter bell() विधि सिस्टम की डिफ़ॉल्ट घटना या संवाद ध्वनि उत्पन्न करती है। इस विधि को डिफ़ॉल्ट विंडो या फ्रेम में लागू किया जा सकता है। हम सिस्टम कॉन्फ़िगरेशन में जाकर विंडो की ध्वनि को बदल सकते हैं। इस उदाहरण में, हम एक बटन बनाएंगे जो डिफ़ॉल्ट ध्वनि बनाएगा। उदाहरण #Import the library from tkinter