stdio काफी डिज़ाइन किया गया है कोई फर्क नहीं पड़ता कि आप डेटा को पढ़ने के लिए किस तरह से पसंद करते हैं। यदि आपको चरित्र-दर-चरित्र पढ़ने और लिखने की ज़रूरत है, तो वे आम तौर पर मैक्रोज़ में विस्तार करते हैं जो बफर तक पहुंचते हैं, जब यह पूर्ण/खाली होता है। लाइन-बाय-लाइन टेक्स्ट io के लिए, puts
/fputs
और fgets
का उपयोग करें। (लेकिन कभीgets
का उपयोग करें क्योंकि यह नियंत्रित करने का कोई तरीका नहीं है कि यह कितने बाइट्स पढ़ेगा!) printf
परिवार (उदाहरण के लिए fprintf
) टेक्स्ट के लिए बेहद उपयोगी है क्योंकि यह आपको लिखने से पहले स्मृति में अस्थायी बफर बनाने की अनुमति देता है (और इस प्रकार आप सभी स्मृति आवंटन, अतिप्रवाह, आदि मुद्दों के बारे में सोचने से बचने देते हैं)। fscanf
बहुत कम उपयोगी होता है, लेकिन अधिकतर क्योंकि इसका उपयोग करना मुश्किल है। यदि आप fscanf
के लिए प्रलेखन का अध्ययन करते हैं और %[
, %n
, और संख्यात्मक विनिर्देशकों का उपयोग कैसे करें, यह बहुत शक्तिशाली हो सकता है!
टेक्स्ट के बड़े ब्लॉक (जैसे स्मृति में पूरी फ़ाइल लोड करना) या बाइनरी डेटा के लिए, आप fread
और fwrite
फ़ंक्शंस का भी उपयोग कर सकते हैं। आपको गणना तर्क के लिए हमेशा 1 पास करना चाहिए और गिनती तर्क के लिए पढ़ने/लिखने के लिए बाइट्स की संख्या; अन्यथा वापसी मूल्य से बताना असंभव है कि सफलतापूर्वक पढ़ा या लिखा गया था।
आप एक यथोचित POSIX की तरह प्रणाली (काफी कुछ भी) पर हैं, तो आप भी निचले स्तर कब कार्यों open
, read
, write
, उपयोग कर सकते हैं ये हैं सी मानक लेकिन भाग की नहीं हिस्सा पीओएसईक्स, और गैर-पॉज़िक्स सिस्टम आमतौर पर समान कार्य प्रदान करते हैं लेकिन संभवतः थोड़ा-अलग व्यवहार के साथ (उदाहरण के लिए, फ़ाइल डिस्क्रिप्टर को अनुक्रमिक रूप से 0,1,2 क्रमांकित नहीं किया जा सकता है ... जैसे POSIX की आवश्यकता होगी)।
स्रोत
2010-07-07 11:26:32
इस तरह के सी प्रोग्रामिंग भाषा के रूप में एक पुस्तक, पढ़ें। और I/O संचालन सामान्य रूप से CPU बाध्य नहीं होते हैं। –