170 likes | 281 Views
Chapter 8. File-Oriented Input and Output. 8.1 INTRODUCTION. a file can also be designed to store data. We can easily update files, A data file as input Using a test editor to create data files. 8.2 FUNDAMENTALS OF C DATA FILES.
E N D
Chapter 8 File-Oriented Input and Output
8.1 INTRODUCTION • a file can also be designed to store data. • We can easily update files, • A data file as input • Using a test editor to create data files
8.2 FUNDAMENTALS OF C DATA FILES • a data file is a named collection of records, normally kept in external storage. A record is the collection of related data values in a file. • A text file stores data as readable • A binary file consists of nonreadable characters • All records in a test file are terminated by an end-of-file marker placed by the operating system to mark the physical end of the file.
C Files and Streams • The most commonly used functions are • 1.The function fopen to open files, that is, to establish a stream between a program and a file • 2.The functions fscanf, fgetc, fgets, and fread for input of data from files • 3.The functions fprintf, fputc, fputs, and fwrite for output of data to a file • 4.The function feof to check for the end-of-file marker during input • The function fclose to close a file, or detach it from the program
Fscanf(student_file, “&d”, &test_score); • The prefix f reminder that they all operate on files.
Declaring Files • FILE *personnel_file; • Declares personnel_file as a file establishes a stream between your program and the file personnel_file • * declared as a pointer that is a variable contains the address of another variable or program entity in the main memory • The keyword FILE in a file declaration must be all uppercase.
Naming Data Files • Internal file name is the name that the C system uses to identify a file among others that a program might process. • External file name is the name that the operating system uses to identify a file in a disk directory • For example: • A:\PROSONNEL.TXT
Before we can process a file, we must properly associate the external and internal names for a file so that whenever our C program references the file, the operating system can understand which external file it should access for input or output purposes.
InternalFileName= fopen(ExternalFileName, OpenMode); • Used file open modes are • 1.“r”, can read data from it • 2.“w”, to write data to it • 3.“a”, append data to the end of an already existing file • 4.“r+”, opens a file for update(both an input and an output file) • 5.“w+”, destroys the file if it already exists and opens a new file for update
Open mode is important • 1.The OpenMode parameter in the fopen statement is required • 2.“w” and “w+” are destructive; will destroy that file and begin creating a new file • 3.“a” and “a+” are nondestructive. Can read data from a file that has been opened in “a+” • 4.Open mode of input “r” the file must exist physically
Example 8.2 • FILE *outdata; • Outdata=fopen(“a:OUTPUT.TXT”, “w”); • Establish outdata as an output stream between our program and the external file A:OUTPUT.TXT Example 8.3 • Char in_file_name[15];
Example 8.3 char in_file_name[15]; … FILE *indata; … printf(“Enter external file name for input file: “); gets(in_file_name); … indata=fopen(in_file_name, “r”);
File Open Verification • If an fopen function call returns a NULL pointer valus, then the call has failed. • NULL is a pointer variables. Exit(-1); • Will terminate the program execution and return the control to the operating system with a value of –1 • Abnormal program termination
Example 8.4 #include <stdlib.h> … if((indata=fopen(file_name, “r”)) ==Null) { printf(“File open error on %s”, file_name); exit(-1); }
fprintf(stderr, “File open error on %s”, file_name); • printing to stderr is faster than printing to stdout because the message appears on the screen without any delay or intermediate character buffering.
Closing Files and the fclose Function • Fclose(InternalFileName); • Cuts the connection between the program and the file. • The file pointer no longer exists • Fclose(indata); • Checking for End-of-File and the feof Function • To detect the end-of-file marker at the end of a data file
The feof function returns a nonzero integer(true) if the most recent input operation on the file InternalFileName has detected the thd-of-file marker; • For example, • While (! feof(student file)).