SlideShare a Scribd company logo
1
File Handling
2
Storage seen so far
 All variables stored in memory
 Problem: the contents of memory are wiped out
when the computer is powered off
 Example: Consider keeping students’ records
 100 students records are added in array of
structures
 Machine is then powered off after sometime
 When the machine is powered on, the 100 records
entered earlier are all gone!
 Have to enter again if they are needed
3
Solution: Files
 A named collection of data, stored in secondary
storage like disk, CD-ROM, USB drives etc.
 Persistent storage, not lost when machine is
powered off
 Save data in memory to files if needed (file
write)
 Read data from file later whenever needed (file
read)
4
Organization of a file
 Stored as sequence of bytes, logically contiguous
 May not be physically contiguous on disk, but you
do not need to worry about that
 The last byte of a file contains the end-of-file
character (EOF), with ASCII code 1A (hex).
 While reading a text file, the EOF character can be
checked to know the end
 Two kinds of files:
 Text : contains ASCII codes only
 Binary : can contain non-ASCII characters
 Example: Image, audio, video, executable, etc.
 EOF cannot be used to check end of file
5
Basic operations on a file
 Open
 Read
 Write
 Close
 Mainly we want to do read or write, but a file has
to be opened before read/write, and should be
closed after all read/write is over
6
Opening a File: fopen()
 FILE * is a datatype used to represent a
pointer to a file
 fopen takes two parameters, the name of the
file to open and the mode in which it is to be
opened
 It returns the pointer to the file if the file is
opened successfully, or NULL to indicate that it
is unable to open the file
7
Example: opening file.dat for write
FILE *fptr;
char filename[ ]= "file2.dat";
fptr = fopen (filename,"w");
if (fptr == NULL) {
printf (“ERROR IN FILE CREATION”);
/* DO SOMETHING */
}
8
Modes for opening files
 The second argument of fopen is the mode in
which we open the file.
9
Modes for opening files
 The second argument of fopen is the mode in
which we open the file.
"r" : opens a file for reading (can only read)
 Error if the file does not already exists
 "r+" : allows write also
10
Modes for opening files
 The second argument of fopen is the mode in
which we open the file.
"r" : opens a file for reading (can only read)
 Error if the file does not already exists
 "r+" : allows write also
"w" : creates a file for writing (can only write)
 Will create the file if it does not exist
 Caution: writes over all previous contents if the
flle already exists
 "w+" : allows read also
11
Modes for opening files
 The second argument of fopen is the mode in
which we open the file.
"r" : opens a file for reading (can only read)
 Error if the file does not already exists
 "r+" : allows write also
"w" : creates a file for writing (can only write)
 Will create the file if it does not exist
 Caution: writes over all previous contents if the
flle already exists
 "w+" : allows read also
"a" : opens a file for appending (write at the
end of the file)
 "a+" : allows read also
12
The exit() function
 Sometimes error checking means we want
an emergency exit from a program
 Can be done by the exit() function
 The exit() function, called from anywhere
in your C program, will terminate the
program at once
13
Usage of exit( )
FILE *fptr;
char filename[]= "file2.dat";
fptr = fopen (filename,"w");
if (fptr == NULL) {
printf (“ERROR IN FILE CREATION”);
/* Do something */
exit(-1);
}
………rest of the program………
14
Writing to a file: fprintf( )
 fprintf() works exactly like printf(), except that
its first argument is a file pointer. The
remaining two arguments are the same as
printf
 The behaviour is exactly the same, except that
the writing is done on the file instead of the
display
FILE *fptr;
fptr = fopen ("file.dat","w");
fprintf (fptr, "Hello World!n");
fprintf (fptr, “%d %d”, a, b);
15
Reading from a file: fscanf( )
 fscanf() works like scanf(), except that its first
argument is a file pointer. The remaining two
arguments are the same as scanf
 The behaviour is exactly the same, except
 The reading is done from the file instead of from
the keyboard (think as if you typed the same thing
in the file as you would in the keyboard for a scanf
with the same arguments)
 The end-of-file for a text file is checked differently
(check against special character EOF)
16
Reading from a file: fscanf( )
FILE *fptr;
fptr = fopen (“input.dat”, “r”);
/* Check it's open */
if (fptr == NULL)
{
printf(“Error in opening file n”);
exit(-1);
}
fscanf (fptr, “%d %d”,&x, &y);
char ch;
while (fscanf(fptr, “%c”,
&ch) != EOF)
{
/* not end of file; read */
}
EOF checking in a loop
17
Reading lines from a file: fgets()
 Takes three parameters
 a character array str, maximum number of characters
to read size, and a file pointer fp
 Reads from the file fp into the array str until any
one of these happens
 No. of characters read = size - 1
 n is read (the char n is added to str)
 EOF is reached or an error occurs
 ‘0’ added at end of str if no error
 Returns NULL on error or EOF, otherwise returns
pointer to str
18
Reading lines from a file: fgets()
FILE *fptr;
char line[1000];
/* Open file and check it is open */
while (fgets(line,1000,fptr) != NULL)
{
printf ("Read line %sn",line);
}
19
Writing lines to a file: fputs()
 Takes two parameters
A string str (null terminated) and a file pointer
fp
 Writes the string pointed to by str into the
file
 Returns non-negative integer on success,
EOF on error
20
Reading/Writing a character:
fgetc(), fputc()
 Equivalent of getchar(), putchar() for
reading/writing char from/to keyboard
 Exactly same, except that the first
parameter is a file pointer
 Equivalent to reading/writing a byte (the
char)
int fgetc(FILE *fp);
int fputc(int c, FILE *fp);
 Example:
char c;
c = fgetc(fp1); fputc(c, fp2);
21
Formatted and Un-formatted I/O
 Formatted I/O
 Using fprintf/fscanf
 Can specify format strings to directly read as
integers, float etc.
 Unformatted I/O
 Using fgets/fputs/fgetc/fputc
 No format string to read different data types
 Need to read as characters and convert explicitly
22
Closing a file
 Should close a file when no more read/write
to a file is needed in the rest of the program
 File is closed using fclose() and the file
pointer
FILE *fptr;
char filename[]= "myfile.dat";
fptr = fopen (filename,"w");
fprintf (fptr,"Hello World of filing!n");
…. Any more read/write to myfile.dat….
fclose (fptr);
23
Command Line
Arguments
24
What are they?
 A program can be executed by directly
typing a command with parameters at the
prompt
$ cc –o test test.c
$ ./a.out in.dat out.dat
$ prog_name param_1 param_2 param_3
..
The individual items specified are
separated from one another by spaces
 First item is the program name
25
What do they mean?
 Recall that main() is also a function
 It can also take parameters, just like other
C function
 The items in the command line are passed
as parameters to main
 Parameters argc and argv in main keeps
track of the items specified in the
command line
26
How to access them?
int main (int argc, char *argv[]);
Argument
Count
Array of strings
as command line
arguments including
the command itself.
The parameters are filled up with the command line
arguments typed when the program is run
They can now be accessed inside main just like any
other variable
27
Example: Contd.
$ ./a.out s.dat d.dat
argc=3
./a.out
s.dat
d.dat
argv
argv[0] = “./a.out” argv[1] = “s.dat” argv[2] = “d.dat”
28
Contd.
 Still there is a problem
 All the arguments are passed as strings in argv[ ]
 But the intention may have been to pass an
int/float etc.
 Solution: Use sscanf()
 Exactly same as scanf, just reads from a string
(char *) instead of from the keyboard
 The first parameter is the string pointer, the next
two parameters are exactly the same as scanf
29
Example
 Write a program that takes as command line
arguments 2 integers, and prints their sum
int main(int argc, char *argv[ ])
{
int i, n1, n2;
printf(“No. of arg is %dn”, argc);
for (i=0; i<argc; ++i)
printf(“%sn”, argv[i]);
sscanf(argv[1], “%d”, &n1);
sscanf(argv[2], “%d”, &n2);
printf(“Sum is %dn”, n1 + n2);
return 0;
}
$ ./a.out 32 54
No. of arg is 3
./a.out
32
54
Sum is 86
30

More Related Content

Similar to file.ppt

C Programming Unit-5
C Programming Unit-5C Programming Unit-5
C Programming Unit-5
Vikram Nandini
 
ppt5-190810161800 (1).pdf
ppt5-190810161800 (1).pdfppt5-190810161800 (1).pdf
ppt5-190810161800 (1).pdf
MalligaarjunanN
 
File management
File managementFile management
File management
lalithambiga kamaraj
 
Advance C Programming UNIT 4-FILE HANDLING IN C.pdf
Advance C Programming UNIT 4-FILE HANDLING IN C.pdfAdvance C Programming UNIT 4-FILE HANDLING IN C.pdf
Advance C Programming UNIT 4-FILE HANDLING IN C.pdf
sangeeta borde
 
Read write program
Read write programRead write program
Read write programAMI AMITO
 
PPS PPT 2.pptx
PPS PPT 2.pptxPPS PPT 2.pptx
PPS PPT 2.pptx
Sandeepbhuma1
 
Object Oriented Programming using C++: Ch12 Streams and Files.pptx
Object Oriented Programming using C++: Ch12 Streams and Files.pptxObject Oriented Programming using C++: Ch12 Streams and Files.pptx
Object Oriented Programming using C++: Ch12 Streams and Files.pptx
RashidFaridChishti
 
Object Oriented Programming Using C++: Ch12 Streams and Files.pptx
Object Oriented Programming Using C++: Ch12 Streams and Files.pptxObject Oriented Programming Using C++: Ch12 Streams and Files.pptx
Object Oriented Programming Using C++: Ch12 Streams and Files.pptx
RashidFaridChishti
 
File Handling in c.ppt
File Handling in c.pptFile Handling in c.ppt
File Handling in c.ppt
BhumaNagaPavan
 
file handling1
file handling1file handling1
file handling1student
 
C UNIT-5 PREPARED BY M V BRAHMANANDA REDDY
C UNIT-5 PREPARED BY M V BRAHMANANDA REDDYC UNIT-5 PREPARED BY M V BRAHMANANDA REDDY
C UNIT-5 PREPARED BY M V BRAHMANANDA REDDYRajeshkumar Reddy
 
4 text file
4 text file4 text file
4 text file
hasan Mohammad
 
VIT351 Software Development VI Unit5
VIT351 Software Development VI Unit5VIT351 Software Development VI Unit5
VIT351 Software Development VI Unit5
YOGESH SINGH
 
UNIT 10. Files and file handling in C
UNIT 10. Files and file handling in CUNIT 10. Files and file handling in C
UNIT 10. Files and file handling in C
Ashim Lamichhane
 
Handout#01
Handout#01Handout#01
Handout#01
Sunita Milind Dol
 
Module 5 file cp
Module 5 file cpModule 5 file cp
Module 5 file cp
Amarjith C K
 

Similar to file.ppt (20)

Unit5 C
Unit5 C Unit5 C
Unit5 C
 
Satz1
Satz1Satz1
Satz1
 
C Programming Unit-5
C Programming Unit-5C Programming Unit-5
C Programming Unit-5
 
ppt5-190810161800 (1).pdf
ppt5-190810161800 (1).pdfppt5-190810161800 (1).pdf
ppt5-190810161800 (1).pdf
 
File management
File managementFile management
File management
 
Advance C Programming UNIT 4-FILE HANDLING IN C.pdf
Advance C Programming UNIT 4-FILE HANDLING IN C.pdfAdvance C Programming UNIT 4-FILE HANDLING IN C.pdf
Advance C Programming UNIT 4-FILE HANDLING IN C.pdf
 
Read write program
Read write programRead write program
Read write program
 
7.0 files and c input
7.0 files and c input7.0 files and c input
7.0 files and c input
 
PPS PPT 2.pptx
PPS PPT 2.pptxPPS PPT 2.pptx
PPS PPT 2.pptx
 
Object Oriented Programming using C++: Ch12 Streams and Files.pptx
Object Oriented Programming using C++: Ch12 Streams and Files.pptxObject Oriented Programming using C++: Ch12 Streams and Files.pptx
Object Oriented Programming using C++: Ch12 Streams and Files.pptx
 
Object Oriented Programming Using C++: Ch12 Streams and Files.pptx
Object Oriented Programming Using C++: Ch12 Streams and Files.pptxObject Oriented Programming Using C++: Ch12 Streams and Files.pptx
Object Oriented Programming Using C++: Ch12 Streams and Files.pptx
 
File Handling in c.ppt
File Handling in c.pptFile Handling in c.ppt
File Handling in c.ppt
 
Unit 8
Unit 8Unit 8
Unit 8
 
file handling1
file handling1file handling1
file handling1
 
C UNIT-5 PREPARED BY M V BRAHMANANDA REDDY
C UNIT-5 PREPARED BY M V BRAHMANANDA REDDYC UNIT-5 PREPARED BY M V BRAHMANANDA REDDY
C UNIT-5 PREPARED BY M V BRAHMANANDA REDDY
 
4 text file
4 text file4 text file
4 text file
 
VIT351 Software Development VI Unit5
VIT351 Software Development VI Unit5VIT351 Software Development VI Unit5
VIT351 Software Development VI Unit5
 
UNIT 10. Files and file handling in C
UNIT 10. Files and file handling in CUNIT 10. Files and file handling in C
UNIT 10. Files and file handling in C
 
Handout#01
Handout#01Handout#01
Handout#01
 
Module 5 file cp
Module 5 file cpModule 5 file cp
Module 5 file cp
 

Recently uploaded

Polish students' mobility in the Czech Republic
Polish students' mobility in the Czech RepublicPolish students' mobility in the Czech Republic
Polish students' mobility in the Czech Republic
Anna Sz.
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
Atul Kumar Singh
 
Lapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdfLapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdf
Jean Carlos Nunes Paixão
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Thiyagu K
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
Jisc
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
Adversarial Attention Modeling for Multi-dimensional Emotion Regression.pdf
Adversarial Attention Modeling for Multi-dimensional Emotion Regression.pdfAdversarial Attention Modeling for Multi-dimensional Emotion Regression.pdf
Adversarial Attention Modeling for Multi-dimensional Emotion Regression.pdf
Po-Chuan Chen
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCECLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
BhavyaRajput3
 
The Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptxThe Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptx
DhatriParmar
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
camakaiclarkmusic
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
Delapenabediema
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
DeeptiGupta154
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
TechSoup
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
Jisc
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
beazzy04
 
Embracing GenAI - A Strategic Imperative
Embracing GenAI - A Strategic ImperativeEmbracing GenAI - A Strategic Imperative
Embracing GenAI - A Strategic Imperative
Peter Windle
 
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th SemesterGuidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Atul Kumar Singh
 

Recently uploaded (20)

Polish students' mobility in the Czech Republic
Polish students' mobility in the Czech RepublicPolish students' mobility in the Czech Republic
Polish students' mobility in the Czech Republic
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
 
Lapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdfLapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdf
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
Adversarial Attention Modeling for Multi-dimensional Emotion Regression.pdf
Adversarial Attention Modeling for Multi-dimensional Emotion Regression.pdfAdversarial Attention Modeling for Multi-dimensional Emotion Regression.pdf
Adversarial Attention Modeling for Multi-dimensional Emotion Regression.pdf
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCECLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
CLASS 11 CBSE B.St Project AIDS TO TRADE - INSURANCE
 
The Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptxThe Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptx
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
 
Embracing GenAI - A Strategic Imperative
Embracing GenAI - A Strategic ImperativeEmbracing GenAI - A Strategic Imperative
Embracing GenAI - A Strategic Imperative
 
Guidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th SemesterGuidance_and_Counselling.pdf B.Ed. 4th Semester
Guidance_and_Counselling.pdf B.Ed. 4th Semester
 

file.ppt

  • 2. 2 Storage seen so far  All variables stored in memory  Problem: the contents of memory are wiped out when the computer is powered off  Example: Consider keeping students’ records  100 students records are added in array of structures  Machine is then powered off after sometime  When the machine is powered on, the 100 records entered earlier are all gone!  Have to enter again if they are needed
  • 3. 3 Solution: Files  A named collection of data, stored in secondary storage like disk, CD-ROM, USB drives etc.  Persistent storage, not lost when machine is powered off  Save data in memory to files if needed (file write)  Read data from file later whenever needed (file read)
  • 4. 4 Organization of a file  Stored as sequence of bytes, logically contiguous  May not be physically contiguous on disk, but you do not need to worry about that  The last byte of a file contains the end-of-file character (EOF), with ASCII code 1A (hex).  While reading a text file, the EOF character can be checked to know the end  Two kinds of files:  Text : contains ASCII codes only  Binary : can contain non-ASCII characters  Example: Image, audio, video, executable, etc.  EOF cannot be used to check end of file
  • 5. 5 Basic operations on a file  Open  Read  Write  Close  Mainly we want to do read or write, but a file has to be opened before read/write, and should be closed after all read/write is over
  • 6. 6 Opening a File: fopen()  FILE * is a datatype used to represent a pointer to a file  fopen takes two parameters, the name of the file to open and the mode in which it is to be opened  It returns the pointer to the file if the file is opened successfully, or NULL to indicate that it is unable to open the file
  • 7. 7 Example: opening file.dat for write FILE *fptr; char filename[ ]= "file2.dat"; fptr = fopen (filename,"w"); if (fptr == NULL) { printf (“ERROR IN FILE CREATION”); /* DO SOMETHING */ }
  • 8. 8 Modes for opening files  The second argument of fopen is the mode in which we open the file.
  • 9. 9 Modes for opening files  The second argument of fopen is the mode in which we open the file. "r" : opens a file for reading (can only read)  Error if the file does not already exists  "r+" : allows write also
  • 10. 10 Modes for opening files  The second argument of fopen is the mode in which we open the file. "r" : opens a file for reading (can only read)  Error if the file does not already exists  "r+" : allows write also "w" : creates a file for writing (can only write)  Will create the file if it does not exist  Caution: writes over all previous contents if the flle already exists  "w+" : allows read also
  • 11. 11 Modes for opening files  The second argument of fopen is the mode in which we open the file. "r" : opens a file for reading (can only read)  Error if the file does not already exists  "r+" : allows write also "w" : creates a file for writing (can only write)  Will create the file if it does not exist  Caution: writes over all previous contents if the flle already exists  "w+" : allows read also "a" : opens a file for appending (write at the end of the file)  "a+" : allows read also
  • 12. 12 The exit() function  Sometimes error checking means we want an emergency exit from a program  Can be done by the exit() function  The exit() function, called from anywhere in your C program, will terminate the program at once
  • 13. 13 Usage of exit( ) FILE *fptr; char filename[]= "file2.dat"; fptr = fopen (filename,"w"); if (fptr == NULL) { printf (“ERROR IN FILE CREATION”); /* Do something */ exit(-1); } ………rest of the program………
  • 14. 14 Writing to a file: fprintf( )  fprintf() works exactly like printf(), except that its first argument is a file pointer. The remaining two arguments are the same as printf  The behaviour is exactly the same, except that the writing is done on the file instead of the display FILE *fptr; fptr = fopen ("file.dat","w"); fprintf (fptr, "Hello World!n"); fprintf (fptr, “%d %d”, a, b);
  • 15. 15 Reading from a file: fscanf( )  fscanf() works like scanf(), except that its first argument is a file pointer. The remaining two arguments are the same as scanf  The behaviour is exactly the same, except  The reading is done from the file instead of from the keyboard (think as if you typed the same thing in the file as you would in the keyboard for a scanf with the same arguments)  The end-of-file for a text file is checked differently (check against special character EOF)
  • 16. 16 Reading from a file: fscanf( ) FILE *fptr; fptr = fopen (“input.dat”, “r”); /* Check it's open */ if (fptr == NULL) { printf(“Error in opening file n”); exit(-1); } fscanf (fptr, “%d %d”,&x, &y); char ch; while (fscanf(fptr, “%c”, &ch) != EOF) { /* not end of file; read */ } EOF checking in a loop
  • 17. 17 Reading lines from a file: fgets()  Takes three parameters  a character array str, maximum number of characters to read size, and a file pointer fp  Reads from the file fp into the array str until any one of these happens  No. of characters read = size - 1  n is read (the char n is added to str)  EOF is reached or an error occurs  ‘0’ added at end of str if no error  Returns NULL on error or EOF, otherwise returns pointer to str
  • 18. 18 Reading lines from a file: fgets() FILE *fptr; char line[1000]; /* Open file and check it is open */ while (fgets(line,1000,fptr) != NULL) { printf ("Read line %sn",line); }
  • 19. 19 Writing lines to a file: fputs()  Takes two parameters A string str (null terminated) and a file pointer fp  Writes the string pointed to by str into the file  Returns non-negative integer on success, EOF on error
  • 20. 20 Reading/Writing a character: fgetc(), fputc()  Equivalent of getchar(), putchar() for reading/writing char from/to keyboard  Exactly same, except that the first parameter is a file pointer  Equivalent to reading/writing a byte (the char) int fgetc(FILE *fp); int fputc(int c, FILE *fp);  Example: char c; c = fgetc(fp1); fputc(c, fp2);
  • 21. 21 Formatted and Un-formatted I/O  Formatted I/O  Using fprintf/fscanf  Can specify format strings to directly read as integers, float etc.  Unformatted I/O  Using fgets/fputs/fgetc/fputc  No format string to read different data types  Need to read as characters and convert explicitly
  • 22. 22 Closing a file  Should close a file when no more read/write to a file is needed in the rest of the program  File is closed using fclose() and the file pointer FILE *fptr; char filename[]= "myfile.dat"; fptr = fopen (filename,"w"); fprintf (fptr,"Hello World of filing!n"); …. Any more read/write to myfile.dat…. fclose (fptr);
  • 24. 24 What are they?  A program can be executed by directly typing a command with parameters at the prompt $ cc –o test test.c $ ./a.out in.dat out.dat $ prog_name param_1 param_2 param_3 .. The individual items specified are separated from one another by spaces  First item is the program name
  • 25. 25 What do they mean?  Recall that main() is also a function  It can also take parameters, just like other C function  The items in the command line are passed as parameters to main  Parameters argc and argv in main keeps track of the items specified in the command line
  • 26. 26 How to access them? int main (int argc, char *argv[]); Argument Count Array of strings as command line arguments including the command itself. The parameters are filled up with the command line arguments typed when the program is run They can now be accessed inside main just like any other variable
  • 27. 27 Example: Contd. $ ./a.out s.dat d.dat argc=3 ./a.out s.dat d.dat argv argv[0] = “./a.out” argv[1] = “s.dat” argv[2] = “d.dat”
  • 28. 28 Contd.  Still there is a problem  All the arguments are passed as strings in argv[ ]  But the intention may have been to pass an int/float etc.  Solution: Use sscanf()  Exactly same as scanf, just reads from a string (char *) instead of from the keyboard  The first parameter is the string pointer, the next two parameters are exactly the same as scanf
  • 29. 29 Example  Write a program that takes as command line arguments 2 integers, and prints their sum int main(int argc, char *argv[ ]) { int i, n1, n2; printf(“No. of arg is %dn”, argc); for (i=0; i<argc; ++i) printf(“%sn”, argv[i]); sscanf(argv[1], “%d”, &n1); sscanf(argv[2], “%d”, &n2); printf(“Sum is %dn”, n1 + n2); return 0; } $ ./a.out 32 54 No. of arg is 3 ./a.out 32 54 Sum is 86
  • 30. 30