0% found this document useful (0 votes)
4 views

files

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

files

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 37

File Handling in ‘C’

Contents
• Need for file
• Streams in ‘C’
• Bufffers Associated
• Types
• Operations
• Working with files
• File modes
What is a File?
• A file is a collection of related data that a computers treats
as a single unit.
• Computers store files to secondary storage so that the
contents of files remain intact when a computer shuts
down.
• When a computer reads a file, it copies the file from the
storage device to memory; when it writes to a file, it
transfers data from memory to the storage device.
• C uses a structure called FILE (defined in stdio.h) to store
the attributes of a file.
Stored file on disk
Steams in’C‘

• Streams are termed as preconnected input and output


channels between text terminal and program(where
began execution)

• Streams are logical interface to a file,where it can refer to


a file, computer scree, keyboard..
• A Stream is a linked to a file using open operation
• Disassociated from a file with close operation
Types of Streams
• stdin -standard input
• stdout standard output keyboard
• stderr -standard error stdin

program
stdout stderr
screen
diagram :flow of data in streams
stdin -standard input
• stdin is the stream which the programs receive its data
• the program requests transfer of data using read
operations
• not all programs require input
• unless redirected , all inputs from keyboard
stdout -standard output
• stdout is the stream where a program writes its output
data
• the program requests data transfer using the write
operation
• not all programs generate ouput
stderr -standard err
• stderr is a output stream used by a porgram to report
error messages.

• independent of standard ouput , that can be redirected


seperately

• stderr & stdout can be directed to the same destination


Buffers Associated
• when a file is created , A Buffer is created auomatically
and associated with stream

• Block of memory for temporary storage of data the has


read from or to write a file
• Buffers are hardware independent
• Acts as a interface between stream(characer oriented)
and disk(block oriented)
Buffer associated with streams

Program Data from


writes data Buffer is
to Buffer written to
PROGRAM disk
BUFFER DISK

diagram :flow of data in Buffer


Types of Files
• When dealing with files, there are two types of files you
should know about:

• Text files
• Binary files
Text files
• Text files are the normal .txt files. You can easily create
text files using any simple text editors such as Notepad.

• When you open those files, you'll see all the contents
within the file as plain text. You can easily edit or delete
the contents.

• They take minimum effort to maintain, are easily readable,


and provide the least security and takes bigger storage
space.
Binary files
• Binary files are mostly the .bin files in your computer.

• Instead of storing data in plain text, they store it in the


binary form (0's and 1's).

• They can hold a higher amount of data, are not readable


easily, and provides better security than text files.
File Operations
• In C, you can perform four major operations on files,
either text or binary:

• Creating a new file


• Opening an existing file
• Closing a file
• Reading from and writing information to a file
Working with files
• When working with files, you need to declare a pointer of
type file. This declaration is needed for communication
between the file and the program.

• FILE *fptr;
Steps in Processing a File
• Create the stream via a pointer variable using the FILE
structure: FILE *p;
• Open the file, associating the stream name with the file
name.
• Read or write the data.
• Close the file.
The basic file functions are

– fopen - open a file- specify how its opened


(read/write) and type (binary/text)
– fclose - close an opened file
– fread - read from a file
– fwrite - write to a file
– fseek/fsetpos - move a file pointer to
somewhere in a file.
– ftell/fgetpos - tell you where the file pointer is
located.
File Open The file open function (fopen) serves two purposes:


• It makes the connection between the physical file and the
stream.
• It creates “a program file structure to store the
information” C needs to process the file.
• Syntax: filepointer=fopen(“filename”, “mode”);
More On fopen The file mode tells C how the program will use the file.

• The filename indicates the system name and location for


the file.
• We assign the return value of fopen to our pointer
variable:
• spData = fopen(“MYFILE.TXT”, “w”);
• spData = fopen(“A:\\MYFILE.TXT”, “w”);
Closing a File
• When we finish with a mode, we need to close the file
before ending the program or beginning another mode
with that same file.
• To close a file, we use fclose and the pointer variable:
fclose(spData);
• fprintf() Syntax: fprintf (fp,"string",variables); Example:
• int i = 12;
• float x = 2.356;
• char ch = 's';
• FILE *fp;
• fp=fopen(“out.txt”,”w”);
• fprintf (fp, "%d %f %c", i, x, ch);
• fscanf() Syntax: fscanf (fp,"string",identifiers);
Example: FILE *fp;
• Fp=fopen(“input.txt”,”r”);
• int i;
• fscanf (fp,“%d",i);
getc()
• Syntax: identifier = getc (file pointer); Example:
FILE *fp;
• fp=fopen(“input.txt”,”r”);
• char ch;
• ch = getc (fp);
• putc() write a single character to the output file,
pointed to by fp.
• Example:
• FILE *fp;
• char ch;
• putc (ch,fp);
End of File
• There are a number of ways to test for the end-of-file
condition. Another way is to use the value returned by
the fscanf function:
• FILE *fptr1;
• int istatus ;
• istatus = fscanf (fptr1, "%d", &var) ;
• if ( istatus == feof(fptr1) )
• {
• printf ("End-of-file encountered.\n”) ;
• }
Reading and Writing Files
– #include <stdio.h>
– int main ( )
–{
– FILE *outfile, *infile ; int b = 5, f ;
– float a = 13.72, c = 6.68, e, g ;
– outfile = fopen ("testdata", "w") ;
– fprintf (outfile, “ %f %d %f ", a, b, c) fclose (outfile) ;
– infile = fopen ("testdata", "r") ;
– fscanf (infile,"%f %d %f", &e, &f, &g) ;
– printf (“ %f %d %f \n ", a, b, c) ;
– printf (“ %f %d %f \n ", e, f, g) ;
Example
• #include <stdio.h> #include<conio.h> void main() {
• char ch;
• FILE *fp;
• fp=fopen("out.txt","r");
• while(!feof(fp))
• ch=getc(fp);
• printf("\n%c",ch);
• }
• getch();
read data from files
• fscanf()
• fgets()
• fgetc()
• fread()
writing data to a file
• fprintf()
• fputs()
• fputc()
• fwrite()
detecting EOF
• character by chacter

• feof(fp)
• fread ()
• Declaration:
• size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
• Remarks:
• fread reads a specified number of equal-sized
• data items from an input stream into a block.
• ptr = Points to a block into which data is read
• size = Length of each item read, in bytes
• n = Number of items read
• stream = file pointer
• Example Example: #include <stdio.h> int main() { FILE *f;
• char buffer[11];
• if (f = fopen("fred.txt", “r”))
• fread(buffer, 1, 10, f);
• buffer[10] = 0;
• fclose(f);
• printf("first 10 characters of the file:\n%s\n", buffer);
• }
• return 0;
• }
• fwrite() Declaration:
• size_t fwrite(const void *ptr, size_t size, size_t n, FILE*stream);
• Remarks:
• fwrite appends a specified number of equal-sized data items to
an output file.
• ptr = Pointer to any object; the data written begins at ptr
• size = Length of each item of data
• n =Number of data items to be appended
• stream = file pointer
• Example Example: #include <stdio.h> int main() { }
• char a[10]={'1','2','3','4','5','6','7','8','9','a'};
• FILE *fs;
• fs=fopen("Project.txt","w");
• fwrite(a,1,10,fs);
• fclose(fs);
• return 0;
• }
• fseek()
• This function sets the file position indicator for the stream pointed to by
stream or you can say it seeks a specified place within a file and modify it.
• SEEK_SET Seeks from beginning of file
• SEEK_CUR Seeks from current position
• SEEK_END Seeks from end of file
• Example:
• #include <stdio.h>
• int main()
• { FILE * f; f = fopen("myfile.txt", "w"); fputs("Hello World", f);
fseek(f, 6, SEEK_SET); SEEK_CUR, SEEK_END fputs(" India", f);
fclose(f); return 0; }
• ftell() offset = ftell( file pointer );
• "ftell" returns the current position for input or output on the file
• #include <stdio.h>
• int main(void)
• {
• FILE *stream;
• stream = fopen("MYFILE.TXT", "w");
• fprintf(stream, "This is a test");
• printf("The file pointer is at byte %ld\n", ftell(stream));
• fclose(stream);
• return 0;
• }

You might also like