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

C/C++ में बाइनरी फ़ाइल पढ़ना और लिखना

लेखन

C++ में बाइनरी फाइल लिखने के लिए राइट मेथड का उपयोग करें। यह "पुट" पॉइंटर की स्थिति से शुरू होकर, दिए गए स्ट्रीम पर बाइट्स की दी गई संख्या को लिखने के लिए उपयोग किया जाता है। यदि पुट पॉइंटर वर्तमान में फ़ाइल के अंत में है तो फ़ाइल को बढ़ा दिया जाता है। यदि यह पॉइंटर फ़ाइल के बीच में इंगित करता है, तो फ़ाइल में वर्ण नए डेटा के साथ अधिलेखित हो जाते हैं।

यदि फ़ाइल में लिखने के दौरान कोई त्रुटि हुई है, तो स्ट्रीम को त्रुटि स्थिति में रखा गया है।

लिखने की विधि का सिंटैक्स

ostream& write(const char*, int);

पढ़ना

सी ++ में बाइनरी फ़ाइल पढ़ने के लिए रीड विधि का उपयोग करें। यह दिए गए स्ट्रीम से बाइट्स की एक निश्चित संख्या निकालता है और उन्हें पहले पैरामीटर द्वारा इंगित मेमोरी में रखता है। यदि फ़ाइल में पढ़ने के दौरान कोई त्रुटि होती है, तो स्ट्रीम को एक त्रुटि स्थिति में रखा जाता है, भविष्य में सभी रीड ऑपरेशन विफल हो जाएंगे।

gcount() का उपयोग वर्णों की संख्या को गिनने के लिए किया जा सकता है जो पहले ही पढ़ चुके हैं। फिर क्लियर () का उपयोग स्ट्रीम को प्रयोग करने योग्य स्थिति में रीसेट करने के लिए किया जा सकता है।

पढ़ने के तरीके का सिंटैक्स

ifstream& write(const char*, int);

एल्गोरिदम

Begin
   Create a structure Student to declare variables.
   Open binary file to write.
   Check if any error occurs in file opening.
   Initialize the variables with data.
   If file open successfully, write the binary data using write method.
      Close the file for writing.
   Open the binary file to read.
   Check if any error occurs in file opening.
   If file open successfully, read the binary data file using read method.
      Close the file for reading.
   Check if any error occurs.
   Print the data.
End.

उदाहरण कोड

#include<iostream>
#include<fstream>
using namespace std;
struct Student {
   int roll_no;
   string name;
};
int main() {
   ofstream wf("student.dat", ios::out | ios::binary);
   if(!wf) {
      cout << "Cannot open file!" << endl;
      return 1;
   }
   Student wstu[3];
   wstu[0].roll_no = 1;
   wstu[0].name = "Ram";
   wstu[1].roll_no = 2;
   wstu[1].name = "Shyam";
   wstu[2].roll_no = 3;
   wstu[2].name = "Madhu";
   for(int i = 0; i < 3; i++)
      wf.write((char *) &wstu[i], sizeof(Student));
   wf.close();
   if(!wf.good()) {
      cout << "Error occurred at writing time!" << endl;
      return 1;
   }
   ifstream rf("student.dat", ios::out | ios::binary);
   if(!rf) {
      cout << "Cannot open file!" << endl;
      return 1;
   }
   Student rstu[3];
   for(int i = 0; i < 3; i++)
      rf.read((char *) &rstu[i], sizeof(Student));
   rf.close();
   if(!rf.good()) {
      cout << "Error occurred at reading time!" << endl;
      return 1;
   }
   cout<<"Student's Details:"<<endl;
   for(int i=0; i < 3; i++) {
      cout << "Roll No: " << wstu[i].roll_no << endl;
      cout << "Name: " << wstu[i].name << endl;
      cout << endl;
   }
   return 0;
}

आउटपुट

Student’s Details:
Roll No: 1
Name: Ram
Roll No: 2
Name: Shyam
Roll No: 3
Name: Madhu

  1. C/C++ में रैंड () और srand ()

    इस लेख में, हम C++ STL में रैंड () और srand () फ़ंक्शन के कामकाज, सिंटैक्स और उदाहरणों पर चर्चा करेंगे। रैंड क्या है ()? रैंड () फ़ंक्शन C++ STL में एक इनबिल्ट फ़ंक्शन है, जिसे हेडर फ़ाइल में परिभाषित किया गया है। रैंड () का उपयोग यादृच्छिक संख्याओं की एक श्रृंखला उत्पन्न करने के लिए किया जाता है।

  1. C/C++ में OS इंडिपेंडेंट कोड लिखना

    एक प्रोग्राम जो ऑपरेटिंग सिस्टम के साथ इंटरैक्ट कर सकता है, चाहे वह किसी भी ओएस पर चलता हो। c/c++ के अधिकांश कम्पाइलर में OS का पता लगाने वाले मैक्रो को परिभाषित करने की शक्ति होती है। GCC कंपाइलर के कुछ मैक्रो हैं - _WIN32:32 बिट और 64-बिट विंडोज ओएस के लिए मैक्रो। _WIN64:64-बिट विंडोज ओएस

  1. Iseek () C/C++ में वैकल्पिक nth बाइट को पढ़ने के लिए और इसे किसी अन्य फ़ाइल में लिखने के लिए

    इस ट्यूटोरियल में, हम वैकल्पिक nth बाइट को पढ़ने और इसे दूसरी फ़ाइल में लिखने के तरीके को समझने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें दो .txt फाइलें उपलब्ध कराई जाएंगी। हमारा काम Iseek () का उपयोग करके एक फ़ाइल से दूसरी फ़ाइल में सामग्री लिखना है, जिसका उपयोग फ़ाइल डिस्क्रिप्टर के पॉइं