Unformatted text preview:

File I/O in CFiles in CSlide 3Opening FilesTesting for Successful OpenReading From FilesEnd of FileSlide 8Writing To FilesClosing FilesReading and Writing FilesSlide 12Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 1Winter QuarterFile I/O in CLecture 7Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 2Winter QuarterFiles in C •In C, each file is simply a sequential stream of bytes. C imposes no structure on a file.•A file must first be opened properly before it can be accessed for reading or writing. When a file is opened, a stream is associated with the file.•Successfully opening a file returns a pointer to (i.e., the address of) a file structure, which contains a file descriptor and a file control block.Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 3Winter QuarterFiles in C •The statement: FILE *fptr1, *fptr2 ;declares that fptr1 and fptr2 are pointer variables of type FILE. They will be assigned the address of a file descriptor, that is, an area of memory that will be associated with an input or output stream. •Whenever you are to read from or write to the file, you must first open the file and assign the address of its file descriptor (or structure) to the file pointer variable.Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 4Winter QuarterOpening Files•The statement:fptr1 = fopen ( "mydata", "r" ) ; would open the file mydata for input (reading). •The statement:fptr2 = fopen ("results", "w" ) ; would open the file results for output (writing). •Once the files are open, they stay open until you close them or end the program (which will close all files.)Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 5Winter QuarterTesting for Successful Open•If the file was not able to be opened, then the value returned by the fopen routine is NULL.•For example, let's assume that the file mydata does not exist. Then:FILE *fptr1 ;fptr1 = fopen ( "mydata", "r") ;if (fptr1 == NULL) {printf ("File 'mydata' did not open.\n") ;}Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 6Winter QuarterReading From Files•In the following segment of C language code: int a, b ;FILE *fptr1, *fptr2 ;fptr1 = fopen ( "mydata", "r" ) ;fscanf ( fptr1, "%d%d", &a, &b) ;the fscanf function would read values from the file "pointed" to by fptr1 and assign those values to a and b.Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 7Winter QuarterEnd of File•The end-of-file indicator informs the program when there are no more data (no more bytes) to be processed.•There are a number of ways to test for the end-of-file condition. One is to use the feof function which returns a true or false condition:fscanf (fptr1, "%d", &var) ;if ( feof (fptr1) ){printf ("End-of-file encountered.\n”);}Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 8Winter QuarterEnd 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:int istatus ;istatus = fscanf (fptr1, "%d", &var) ;if ( istatus == EOF ){printf ("End-of-file encountered.\n”) ;}Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 9Winter QuarterWriting To Files•Likewise in a similar way, in the following segment of C language code: int a = 5, b = 20 ;FILE *fptr2 ;fptr2 = fopen ( "results", "w" ) ;fprintf ( fptr2, "%d %d\n", a, b ) ;the fprintf functions would write the values stored in a and b to the file "pointed" to by fptr2.Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 10Winter QuarterClosing Files•The statements: fclose ( fptr1 ) ;fclose ( fptr2 ) ; will close the files and release the file descriptor space and I/O buffer memory.Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 11Winter QuarterReading 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, "%6.2f%2d%5.2f", a, b, c) ; fclose (outfile) ;Engineering H192 - Computer ProgrammingThe Ohio State UniversityGateway Engineering Education CoalitionLect 7 P. 12Winter QuarterReading and Writing Files infile = fopen ("testdata", "r") ; fscanf (infile,"%f %d %f", &e, &f, &g) ; printf ("%6.2f%2d%5.2f\n", a, b, c) ; printf ("%6.2f,%2d,%5.2f\n", e, f, g) ;}12345678901234567890**************************** 13.72 5 6.68 13.72, 5,


View Full Document

OSU ENGR H192 - Lecture 07 - File IO in C

Documents in this Course
Strings

Strings

22 pages

Load more
Download Lecture 07 - File IO in C
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 07 - File IO in C and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 07 - File IO in C 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?