17
Chapter 8 File-Oriented Input and Output

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

Embed Size (px)

Citation preview

Page 1: 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

Chapter 8

File-Oriented Input and Output

Page 2: 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

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

Page 3: 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

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.

Page 4: 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

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

Page 5: 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

• Fscanf(student_file, “&d”, &test_score);

• The prefix f reminder that they all operate on files.

Page 6: 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

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.

Page 7: 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

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

Page 8: 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

• 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.

Page 9: 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

• 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

Page 10: 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

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

Page 11: 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

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];

Page 12: 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

Example 8.3char in_file_name[15];

FILE *indata;

printf(“Enter external file name for input file: “);

gets(in_file_name);

indata=fopen(in_file_name, “r”);  

Page 13: 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

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

Page 14: 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

Example 8.4

#include <stdlib.h>

if((indata=fopen(file_name, “r”)) ==Null) {

printf(“File open error on %s”, file_name);

exit(-1);

}

Page 15: 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

• 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.

Page 16: 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

• 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

Page 17: 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

• 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)).