UAA 105 M S Prasad: Aisst
UAA 105 M S Prasad: Aisst
UAA 105
M S Prasad
File Handling in C
A file is a collection of bytes stored on a secondary storage device, which is generally a disk of
some kind. The collection of bytes may be interpreted, for example, as characters, words, lines,
paragraphs and pages from a textual document; fields and records belonging to a database; or
pixels from a graphical image. There are two kinds of files that is text files and binary files.
Text Files
A text file can be a stream of characters that a computer can process sequentially. It is not only
processed sequentially but only in forward direction. For this reason a text file is usually opened
for only one kind of operation (reading, writing, or appending) at any given time.
Binary Files
A binary file is no different to a text file. It is a collection of bytes. In C Programming Language a
byte and a character are equivalent. No special processing of the data occurs and each byte of data
is transferred to or from the disk unprocessed. C Programming Language places no constructs on
the file, and it may be read from, or written to, in any manner chosen by the programmer.
Opening a file:
The general format of the function used for opening a file is
FILE *fp;
fp=fopen(filename,mode); /* FILE is a reserved word needs to be used as shown always. It
is a data type defined in stdio.h file.*/
The first statement declares the variable fp as a pointer to the data type FILE. As stated earlier,
FILE is a structure that is defined in the I/O Library. The second statement opens the file named
filename and assigns an identifier to the FILE type pointer fp. fopen() contain the file name and
mode (the purpose of opening the file).
r is used to open the file for read only.
w is used to open the file for writing only.
a is used to open the file for appending data to it.
Closing a File
A file must be closed as soon as all operations on it have been completed. This would close the file
1
associated with the file pointer. The input output library supports the function to close a file.
Syntax to close file
fclose(filepointer);
Example
#include
void main(void)
{
FILE *myfile;
char c;
myfile = fopen("firstfile.txt", "r");
if (myfile == NULL) printf("File doesn't exist\n");
else {
do {
c = getc(myfile);
putchar(c);
} while (c != EOF);
}
fclose(myfile);
}
File operation functions in C:
Function Name
Operation
fopen()
Creates a new file. Opens an existing file.
Fclose
Closes a file which has been opened for use
getc()
Reads a character from a file
putc()
Writes a character to a file
fprintf()
Writes a set of data values to a file
fscanf()
Reads a set of data values from a file
getw()
Reads a integer from a file
putw()
Writes an integer to the file
fseek()
Sets the position to a desired point in the file
ftell()
Gives the current position in the file
rewind()
Sets the position to the beginning of the file
This table shows all of the combinations including both text and binary files. Generally you either
read from or write to a text file, but not both at the same time.
With a binary file you can both read and write to the same file. The table below shows what you
can do with each combination.
In my experience with files, unless you are just creating them (use "wb") or reading them (use
"rb" ) you can get away with using "w+b". This lets you create a file from scratch,
In this program, we open the file prog.c for reading. We then read a character
from the file. This file must exist for this program to work. If the file is empty,
we are at the end, so getc returns EOF a special value to indicate that the end
of file has been reached. (Normally -1 is used for EOF)
The while loop simply keeps reading characters from the file and displaying
them, until the end of the file is reached.The function fclose is used to close
the file i.e. indicate that we are finished processing this file.
We could reuse the file pointer fp by opening another file.
Prototypes
if ( fp == NULL )
/* check does file exist etc */
{
printf(Cannot open %s for reading \n, filename );
exit();
/* terminate program */
}
linecount = 1 ;
reply[0] = \0 ;
c = getc( fp ) ;
/* Read 1st character if any */
while ( c != EOF && reply[0] != Q && reply[0] != q)
{
putchar( c ) ;
/* Display character */
if ( c == \n )
linecount = linecount+ 1 ;
if ( linecount == 20 )
{
linecount = 1 ;
printf([Press Return to continue, Q to quit]);
gets( reply ) ;
}
c = getc ( fp );
}
fclose( fp );
}
Writing to Files
The previous programs have opened files for reading and read characters from
them.
To write to a file, the file must be opened for writing e.g.
fp = fopen( fname, w );
If the file does not exist already, it will be created. If the
be overwritten! So, be careful when opening files for
destroy a file unintentionally. Opening files for writing can
create a file in another users directory where you do not
not be allowed and fopen will fail.
file. It is
ftell : takes a file pointer and returns a long containing the current offset in
the file and next byte .
Read & write block Files
Fread ( pointer to arrays first element , size in bytes of element , no
of elements , file pointer)
fread( ( void *) a , size of (int), max , fp ); FILE * fp ;
Similiarly for writing also : fwrite ( ( void *) a , size of ( int) , max, fp);
____________________________________________________
Passing Arguments from Command line
Accessing the command line arguments is a very useful facility. It enables you
to provide commands with arguments that the command can use .
To access these arguments from within a C program, you pass parameters to
the function main(). The use of arguments to main is a key feature of many C
programs.
The declaration of main looks like this:
7
solong
%
---------------------------------------------------------------------------------------------------