From the programming angle there are three main areas where text and binary mode files are different. These are:
- Handling of newlines
- Representation of end of file
- Storage of numbers
Let us explore these three differences:
In
text mode, a newline character is converted into the carriage
return-linefeed combination before being written to the disk. Likewise,
the carriage return-linefeed combination on the disk is converted back
into a newline when the file is read by a C program. However, if a file
is opened in binary mode, as opposed to text mode, these conversions
will not take place.
The second difference
between text and binary modes is in the way the end-of-file is detected.
In text mode, a special character, whose ASCII value is 26, is inserted
after the last character in the file to mark the end of file. If this
character is detected at any point in the file, the read function would
return the EOF signal to the program. As against this, there is no such
special character present in the binary mode files to mark the end of
file. The binary mode files keep track of the end of file from the
number of character present in the directory entry of the file.
The
last difference is storage of numbers. In text file the text and
characters are stored one character per byte, as we expect. But numbers
are stored as strings of characters. Thus, 65112, even though it
occupies 4 bytes in memory, when transferred to the disk using
fprintf(), would occupy 5 bytes, one byte per character. Here if large
amount of data is to be stored in a disk file, using text mode may turn
out to be insufficient. The solution is to open the file in binary mode
and use those functions (fread() and fwrite()) ) which store the numbers
in binary format. It means each number would occupy same number of
bytes on disks as it occupies in memory.
No comments:
Post a Comment
Comment