Title: Chapter 4 Basic Input and Output
1Chapter 4 Basic Input and Output
- We have already seen how to read inputs from the
keyboard and to output values to the computer
screen. - Now we will see how to read from and write to
files (also called input files, output files, or
data files)
2File (data file, output file, input file) a
computer file used for input to or output from a
program.
- Why use a file?
- There are many uses for files, including
- To provide permanent storage of data, such as
- Inventories
- Bank accounts
- Log sheets
- Lab data
- Etc
- To avoid entering large quantities of data from
the keyboard - To provide a copy or record of the output
- To store data where it can then be accessed by
other programs, such as MatLab or Excel
3- Interactive programs
- Our C programs so far have been interactive as
they - Prompt the user on the screen to enter inputs
- Read inputs from the keyboard
- Display outputs on the screen
- Non-interactive programs might read inputs from a
data file, process the data, and write the
results to another data file.
4Input and Output Streams
- Streams are series of bytes in a sequence
- Streams flow from device to device
- Objects are regions of storage in memory
- The object used determines the device stream that
the data comes from or goes to - cin and cout are identifiers for objects defined
by iostream (screen and keyboard) - fstream is a class that allows us to define other
objects (example identifiers outfile and infile)
establishing connections between our C program
and files. - is called the extraction operator
- Examples of input and output streams
- cin x // insert data into x from cin
(identifier for the keyboard) - cout (identifier for the screen)
- infile x // insert data into x from infile
(ex identifier for a data file) - outfile (ex identifier for a data file)
5fstream
fstream is a class that allows us to define
objects establishing connections between a C
program and files. Several useful operators and
functions are part of the class. Header be
sure to include the following header include
// header for working with
files Opening output files Form ofstream
fileidentifier(filename) Example
ofstream outfile(ALab1output.dat) Example
ofstream output(C\\DevC\\EGR125.out) (Note
that \\ is necessary for a single slash in a
character string.) Opening input files Form
ifstream fileidentifier(filename) Example
ifstream infile(ALab1input.dat) Example
ifstream input(C\\DevC\\EGR125.in)
6fstream (continued)
Insertion operator () Example ifstream
infile(ALab1input.dat) cin x // read
x from keyboard infile y // read y from the
input file Extraction operator
() cout screen outfile file Closing files Closing files is generally
not necessary unless you want to open another
file using the same identifier, but it might be
good practice. Form fileidentifier.close()
Example ofstream outdata(E\\EGR125\\mystuff.ou
t) outdata file outdata.close( ) // close the file
7Writing to an output file basic steps
- Open the file (select an identifier and file
name) - Example ofstream outfile(ALab1output.dat)
- Send outputs to the file using the ofstream
object like you would use cout - Example outfile
- (similar to cout
- Close the file
- Example outfile.close( )
- To view the results, open the newly formed output
file with Notepad, Word, DevC, etc. - See sample program on the next page
8(No Transcript)
9Creating an input file
- In order to use a C program to read an input
data file, we must first create the data file. - Create the input file using Notepad, Word (save
in text or rtf format, not as a Word document),
DevC, etc. Use a meaningful file name. The
extension isnt important, but an extension like
.dat or .in is recommended. - Numeric values are typically separated by white
spaces (space, tab, or newline (\n) ) - There is an invisible end-of-file marker ? at the
end of each file so the program knows when the
end has been reached. - C would read the following numeric values from
the following data files in the same way
White space space, tab (\t), or newline (\n)
10Reading input files
- C would read the following numeric values from
the following data files in the same way since it
makes no distinction between white spaces. The
sequence of characters seen in each case is shown.
ifstream infile(Adat1.in) infile x y
z
ifstream infile(Adat2.in) infile x y
z
11Reading from an input file basic steps
- Create the input file using Notepad, Word (save
in text or rtf format, not as a Word document),
DevC, etc. - Open the file (select an identifier and file
name) - Example ifstream infile(ALab1input.dat)
- Read inputs from the file using the ifstream
object like you would use cin - Example infile x
- (similar to cin x)
- Beware of how C handles white spaces and how
real numbers and integers are read from files. - Close the file
- Example infile.close( )
- The output of the program could be sent to the
screen or to an output data file. - See sample program on the next page
12(No Transcript)
13Reading different data types from files
When reading numeric data from a file, care must
be taken when working with integers and real
numbers.
- Reading an integer, such as 2, as a real causes
no problem. The integer value is promoted to a
real value (2.0). - Reading a fixed point number, such as 2.5, as an
integer will result in reading just the digits up
to the decimal point (2). - Reading a fixed point number that begins with a
decimal point, such as .500, as an integer will
result in a file read error or unpredictable
results. - See the following three examples
14Sample 1 Reading double, double, double from
Dat3.in
14
15Sample 2 Reading int, double, double from
Dat3.in
15
16Sample 3 Reading double, int, int from Dat3.in
16
17Reading Character Data
- To read the next three characters typed at the
keyboard - cin c1 c2 c3
- To read the next three characters in the data
file defined below - ifstream infile(AMydata.in)
- infile c1 c2 c3
- Whitespaces are NOT needed for separating
character data - if used, whitespaces are ignored
18(No Transcript)
19Input Buffer
- Perhaps you have used some program on your
computer where you held down a key and, even
after you released the key, the program still
responded to the input. The keystrokes were
stored in a buffer in your computer.
Additionally, you may have held down a key until
the keyboard began beeping, indicating that the
buffer was full. - A buffer is a region of memory used for temporary
storage of information being transferred between
devices - Keystrokes stored in the buffer are accessed
sequentially (i.e., in the same order that they
were entered.) - The computer has a position indicator to keep
track of which information has been read. - Why is this important in C programming?
Suppose you request a single character input (Y
or N, for example), but the user accidentally
hits the key twice. The second character is
still in the buffer and will be read at the next
input!
20Input Buffer - Example
20