working file handling in cpp overview
-
Upload
gourav-kottawar -
Category
Education
-
view
227 -
download
9
Transcript of working file handling in cpp overview
![Page 1: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/1.jpg)
Chapter 11
![Page 2: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/2.jpg)
Contents11.1 Introduction 11.2 Classes for File Stream Operation 11.3 Opening & Closing Files 11.4 Detection of End of File 11.5 More about Open( ): File modes 11.6 File pointer & manipulator 11.7 Sequential Input & output Operation 11.8 Updating a File : Random Access 11.9 Command Line Arguments
2By:-Gourav Kottawar
![Page 3: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/3.jpg)
File Input and Output Stream
C++ uses file streams as an interface between the programs and the data files.
Disk Files ProgramOutput Stream
Data output
Data inputInput Stream
Write Data
Read Data
3By:-Gourav Kottawar
![Page 4: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/4.jpg)
File Input and Output Stream
Disk Files ProgramOutput Stream
Data output
Data inputInput Stream
Write Data
Read Data
The stream that supplies data to the
program is known as input stream
The stream that receives data from the program is known as
output stream
Input stream extracts (or read) data from file
Output stream inserts (or writes) data to the file
4By:-Gourav Kottawar
![Page 5: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/5.jpg)
Stream classes for file operations contained fstream
5By:-Gourav Kottawar
![Page 6: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/6.jpg)
6By:-Gourav Kottawar
![Page 7: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/7.jpg)
7By:-Gourav Kottawar
![Page 8: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/8.jpg)
8By:-Gourav Kottawar
![Page 9: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/9.jpg)
Opening Files For opening a file, we must first create a file
stream and then link it to the filename. A file stream can be defined using the classes
ifstream, ofstream, and fstream that are contained in the header file fstream.
The class to be used depends on read or write.
A file can be open in two ways:Using the constructor function of the class.
○ Useful when we use only one file in the stream.Using the member function open( ) of the class.
○ Use to manage multiple files using one stream.
9By:-Gourav Kottawar
![Page 10: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/10.jpg)
Opening Files Using Constructor
This involves two steps:Create a file stream object to manage the
stream using appropriate class.
○ The class ofstream used to create output stream.
○ The class ifstream to create input stream.
Initialize the file object with the desired filename.
10By:-Gourav Kottawar
![Page 11: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/11.jpg)
Opening Files Using Constructor
ofstream outfile (“results”); ifstream infile(“data”);
continue …
Program
Output Stream
outfile
infile
Input Stream
Disk
ResultFile
DataFile
11By:-Gourav Kottawar
![Page 12: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/12.jpg)
Opening Files Using Open( )
The open( ) can be used to open multiple files that use the same stream object.
For processing a set files sequentially.
file-stream-class stream-object;
stream-object.open ( “file_name” );
12By:-Gourav Kottawar
![Page 13: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/13.jpg)
Opening Files Using Open( )
ofstream outfile;outfile.open(“DATA1”);……..outfile.close( );outfile.open(“DATA2”);………outfile.close( );......... The above program segment opens two files in
sequence for writing the data. The first file is closed before opening the second one. A stream can be connected to only one file at a time.
continue …
13By:-Gourav Kottawar
![Page 14: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/14.jpg)
Opening file using constructor
14By:-Gourav Kottawar
![Page 15: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/15.jpg)
15By:-Gourav Kottawar
![Page 16: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/16.jpg)
#include<iostream.h>#include<stdio.h>#include<conio.h>#include<fstream.h>void main(){ char c,fname[10]; ofstream out; cout<<"Enter File name:"; cin>>fname; out.open(fname); cout<<"Enter contents to store in file (Enter # at end):\n"; while((c=getchar())!='#') { out<<c; } out.close(); getch();}
Opening file using open()
16By:-Gourav Kottawar
![Page 17: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/17.jpg)
// Creating file with constructor#include<iostream.h>#include<fstream.h>int main(){
ofstream outf(“Product”);cout<<“|n Enetr product name:”;char name[20];cin>>name;outf<<name<<“\n”;cout<<“Enter item cost”;float cost;cin>>cost;outf<<cost <<“\n”;outf.close();ifsteam inf(“Product”);inf>>name;inf>>cost;cout<<endl;cout<<“Item name :”<<name <<endl;cout<<“Item cost :”<<cost<<“\n”;inf.close();
}17By:-Gourav Kottawar
![Page 18: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/18.jpg)
// Creating file with constructor#include<iostream.h>#include<fstream.h>int main(){
ofstream outf(“Product”);cout<<“|n Enetr product name:”;char name[20];cin>>name;outf<<name<<“\n”;cout<<“Enter Product cost”;float cost;cin>>cost;outf<<cost <<“\n”;outf.close();ifsteam inf(“Product”);inf>>name;inf>>cost;cout<<endl;cout<<“Product name :”<<name <<endl;cout<<“IProduct cost :” <<cost<<“\n”;inf.close();
}
//Output
Enter product name : HDDEnter product cost : 4000
Product Name :HDDProduct cost :4000
18By:-Gourav Kottawar
![Page 19: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/19.jpg)
#include<iostream.h>#inlcude<fstream.h>int main(){Ofstream fout;fout.open(“Brand”);fout<<“Maruti\n”;fout<<“Volks \n”;fout<<“Honda\n”;fout.close();fout.open(“Car”);fout<<“Swift\n”;fout<<“Polo\n”;fout<<“Amaze\n”;fout..close();//Reading the filesConst int N = 80;Chat line[N];ifstream fin;fin.open(“Brand”);
cout<<“\nContents of Brand file\n”;while(fin){
fin.getline(line,N);cout<<line;
}fin.close();fin.open(“Car”);cout<<“\n Contents of car file \n”;while(fin){
fin.getline(line,N);cout<<line;
}fin.close();return 0;}
19By:-Gourav Kottawar
![Page 20: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/20.jpg)
//Reads the files#include <iostream.h>#include<fstream.h>#include<stdlib.h>int main(){
const int SIZE = 80;char line[SIZE];ifstream fin1,fin2; fin1.open(“Brand”);fin2.open(“Car”);for(int i= 1;i<=10;i++){
if(fin1.eof()!=0){ cout<<“Exit from Brand \n”);
exit(1);}
fin1.getline(line,SIZE);cout<<“Car of “<<line;if(fin2.eof() !=0){
cout<<“Exit from Car”;exit(1);
} 20By:-Gourav Kottawar
![Page 21: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/21.jpg)
fin2.getline(line,SIZE);cout<<line<<“\n”;
}return 0;}
21By:-Gourav Kottawar
![Page 22: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/22.jpg)
fin2.getline(line,SIZE);cout<<line<<“\n”;
}return 0;}
//OutputCar of MarutiSwiftCar of Volks waganPoloCar of HondaAmaze
22By:-Gourav Kottawar
![Page 23: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/23.jpg)
Detecting End-Of-File
while (fin)An ifstream object fin returns a value 0 if any error
occurs in the file operation including the end-of-file condition.
So the while loop may terminates when fin returns a value of zero on reaching the end-of-file condition.
if(fin1.eof() != 0) {exit(1);}eof( ) is a member of ios class.It returns a non-zero value if the end-of-file (EOF)
condition is encountered, and a zero, otherwise.
23By:-Gourav Kottawar
![Page 24: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/24.jpg)
File Modes stream-object.open(“file_name”, mode);
The second argument mode specifies the purpose for which the file is opened.
Default values for these second parameters:○ ios::in – for ifstream - reading only
○ ios::out – for ofstream - writing only
24By:-Gourav Kottawar
![Page 25: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/25.jpg)
File Modes ios::app Append to end-of-file
ios::ate Go to end-of-file on opening ios::binary Binary file ios::in Open file for reading only ios::nocreate Open fails if the file does not
exist ios::noreplace Open files if the file already
exists ios::out Open file for writing only ios::trunc Delete the contents of the file if it exists
fout.open(“data”, ios::app | ios :: nocreate)
continue …
25By:-Gourav Kottawar
![Page 26: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/26.jpg)
File Pointer Input Pointer (get pointer)
The input pointer is used for reading contents of a given file location.
Output Pointer (put pointer)The output pointer is used for writing to a given
file location.
Each time an input or output operation takes place, the appropriate pointer is automatically advanced.
26By:-Gourav Kottawar
![Page 27: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/27.jpg)
File Pointer – Default Actions When a file opened in read-only mode, the
input pointer is automatically set at the beginning of the file.
When a file is opened in write-only mode, the existing contents are deleted and the output pointer is set at the beginning.
When a file is opened in append mode, the output pointer moves to the end of file.
27By:-Gourav Kottawar
![Page 28: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/28.jpg)
Functions for Manipulations of File Pointers
seekg( ) Moves get pointer (input) to a specified location.
seekp( ) Moves put pointer(output) to a specified location.
tellg( ) Gives the current position of the get pointer.
tellp( ) Gives the current position of the put pointer.
28By:-Gourav Kottawar
![Page 29: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/29.jpg)
Seek Function with Absolute Position infile.seekg(10);
Moves the file pointer to the byte number 10. The bytes in a file are numbered beginning from zero. Therefore, the pointer pointing to the 11th byte in the file.
29By:-Gourav Kottawar
![Page 30: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/30.jpg)
Seek Function with Specifying the Offset seekg( offset, refposition); seekp( offset, refposition);
The parameter offset represents the number of bytes the file pointer is to be moved from the location specified by the parameter refposition.
The refposition takes one of the following three constants defined in the ios class:
ios : : beg start of the file ios : : cur current position of the pointer ios : : end end of the file
30By:-Gourav Kottawar
![Page 31: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/31.jpg)
Seek Function with Specifying the Offsetfout.seekg(0, ios : : beg);fout.seekg(0, ios : : beg); Go to startGo to start
fout.seekg(0, ios : : cur);fout.seekg(0, ios : : cur); Stay at the current positionStay at the current position
fout.seekg(0, ios : : end);fout.seekg(0, ios : : end); Go to the end of fileGo to the end of file
fout.seekg(m, ios : : beg);fout.seekg(m, ios : : beg); Move to (m+1)th byte in the fileMove to (m+1)th byte in the file
fout.seekg(m, ios : : cur);fout.seekg(m, ios : : cur); Go forward by m bytes from the current positionGo forward by m bytes from the current position
fout.seekg(-m, ios : : cur);fout.seekg(-m, ios : : cur); Go backward by m bytes from the current positionGo backward by m bytes from the current position
fout.seekg(-m, ios : : end)fout.seekg(-m, ios : : end) Go backward by m bytes from the endGo backward by m bytes from the end
31By:-Gourav Kottawar
![Page 32: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/32.jpg)
Sequential Input and Output Operations put( ) and get( ) Functions
The function put( ) writes a single character to the associated stream.
The function get( ) reads a single charracter from the associated stream.
32By:-Gourav Kottawar
![Page 33: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/33.jpg)
33By:-Gourav Kottawar
![Page 34: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/34.jpg)
//outputFile will be created atC:\TurboC++\Disk\TurboC3\BIN\ABC
34By:-Gourav Kottawar
![Page 35: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/35.jpg)
Sequential Input and Output Operations write( ) and read( ) Functions
The functions write( ) and read ( ) handle the data in binary form.
The values are stored in the disk file in the same format in which they are stored in the internal memory.
An int takes two bytes to store its value in the binary form, irrespective of its size.
But a 4 digit int will take four bytes to store it in the character form.
continue …
35By:-Gourav Kottawar
![Page 36: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/36.jpg)
Sequential Input and Output OperationsRepresenting 2594
continue …
0 0 1 0 0 0 1 00 0 0 0 1 0 1 0
4952
Binary Format
Character Format
4 Bytes II
2 Bytes II
36By:-Gourav Kottawar
![Page 37: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/37.jpg)
Sequential Input and Output Operations infile.read((char *) &V, sizeof(V));
outfile.write((char *) &V, sizeof(V));
write( ) and read( ) functions take two arguments.
First is the address of the variable V Second is the length of that variable in bytes. The address of the variable must be cast to
type char * (pointer to character type).
continue …
37By:-Gourav Kottawar
![Page 38: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/38.jpg)
38By:-Gourav Kottawar
![Page 39: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/39.jpg)
39By:-Gourav Kottawar
![Page 40: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/40.jpg)
Reading and Writing a Class Object The read( ) and write( ) are also used to read
from or write to the disk files objects directly. The read( ) and write( ) handle the entire
structure of an object as a single unit, using the computer’s internal representation of data.
Only data members are written to the disk files.
40By:-Gourav Kottawar
![Page 41: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/41.jpg)
41By:-Gourav Kottawar
![Page 42: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/42.jpg)
42By:-Gourav Kottawar
![Page 43: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/43.jpg)
43By:-Gourav Kottawar
![Page 44: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/44.jpg)
Updating A File : Random Access The size of each object can be obtained using the
statementint object_length = sizeof(object);
The location of a desired object, say mth objectint location = m * object_length;The location gives the byte number of the first byte of the mth object.
Now we can use seekg( ) or seekp( ) to set the file pointer to reach this byte.
44By:-Gourav Kottawar
![Page 45: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/45.jpg)
Updating A File : Random Access To find the total number of objects in a file using
object_lengthint n = file_size / object_length;
The file size can be obtained using the function tellg( ) or tellp( ) when the pointer is located at the end of the file.
continue …
45By:-Gourav Kottawar
![Page 46: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/46.jpg)
46By:-Gourav Kottawar
![Page 47: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/47.jpg)
47By:-Gourav Kottawar
![Page 48: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/48.jpg)
48By:-Gourav Kottawar
![Page 49: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/49.jpg)
49By:-Gourav Kottawar
![Page 50: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/50.jpg)
Error Handling During File Operations A file which we are attempting to open for reading does
not exist. The file name used for a new file may already exist. We may attempt an invalid operation such as reading
past the end-of-file. There may not be any space in the disk for storing more
data. We may use an invalid file name. We may attempt to perform an operation when the file is
not opened for that purpose.
50By:-Gourav Kottawar
![Page 51: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/51.jpg)
Error Handling During File Operations The C++ file stream inherits a “stream_state” member
from the class ios. This member records information on the status of a file
that is being currently used. The class ios supports several member functions that
can be used to read the status recorded in a file stream. eof( ) fail( ) bad( ) good( ), etc.
continue …
51By:-Gourav Kottawar
![Page 52: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/52.jpg)
Command – Line Arguments C++ supports a feature that facilitates the supply of
argument to the main( ) function.
These arguments are supplied at the time of invoking the program.
They are typically used to pass the names of data files. Eg:- exam data result
The command-line arguments are typed by the user and are delimited by a space.
52By:-Gourav Kottawar
![Page 53: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/53.jpg)
Command – Line Arguments The main function can take two arguments.
main( int argc, char * argv [ ] )
The first argument argc (argument counter) represents the number of arguments in the command line.
The second argument argv (argument vector) is an array of char type pointers that points to the command line arguments.
The size of the array will be equal to the value of argc.
continue …
53By:-Gourav Kottawar
![Page 54: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/54.jpg)
Command – Line Arguments C:\> exam data results The value of argc would be 3 and argv would be an array
of three pointers to strings as: argv[0] exam argv[1] data argv[2] results
○ ……○ ……○ infile.open(argv[1]);○ ……○ ……○ outfile.open(argv[2]);○ ……
continue …
54By:-Gourav Kottawar
![Page 55: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/55.jpg)
#include <iostream> int main(int argc, char *argv[]){ using namespace std; cout << "There are " << argc << " arguments:" << endl; // Loop through each argument and print its number and value for (int nArg=0; nArg < argc; nArg++) cout << nArg << " " << argv[nArg] << endl; return 0;}
55By:-Gourav Kottawar
![Page 56: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/56.jpg)
#include <iostream> int main(int argc, char *argv[]){ using namespace std; cout << "There are " << argc << " arguments:" << endl; // Loop through each argument and print its number and value for (int nArg=0; nArg < argc; nArg++) cout << nArg << " " << argv[nArg] << endl; return 0;}
//output
56By:-Gourav Kottawar
![Page 57: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/57.jpg)
57By:-Gourav Kottawar
![Page 58: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/58.jpg)
58By:-Gourav Kottawar
![Page 59: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/59.jpg)
59By:-Gourav Kottawar
![Page 60: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/60.jpg)
60By:-Gourav Kottawar
![Page 61: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/61.jpg)
61By:-Gourav Kottawar
![Page 62: working file handling in cpp overview](https://reader036.fdocuments.us/reader036/viewer/2022062316/586fa2bc1a28abcc238b7011/html5/thumbnails/62.jpg)
Thank You