Within C we access external devices by means of a pointer i.e. address. The address could point to any memory mapped device i.e. Ram, Rom, Duart, Disk drives etc. Therefore there is no difference between accessing area in Ram or a file on a disk. However accessing devices usually require an initialization program, within C this is achieved by the fopen/fclose commands. The syntax of the fopen command is
void main()
{
FILE *name;
name = fopen(device or file name , access);
if (name == NULL )
{
printf("cannot open the file \n\r");
exit(1);
}
}
The device or file name is usually machine dependent i.e.
VMS "dsk$usr:[en_staff.entjmc]file.ext"
Unix "dsk$usr:en_staff\entjmc\file.ext"
Mac "dskname:folder:folder:file";
PC "drive name:\directory\file.ext";
By default the current disk and directory are taken if not specified. The access describes the write/read privilege and type of data stored i.e. text or binary. Text is used to describe sequential data while binary is standard random access data
"r" Text file read only
"w" Create a new Text file write only
"a" Append to end of the text file
"rb" Binary file read only
"wb" Binary file write only
"ab" Append to end of the binary file
"r+" Text file read and write
"w+" Create a new text file for read and write
"a+" Append to end of the text file for read and write
"rb+" Binary file read and write
"wb+" Create a binary file for read and write
"ab+" Append to end of the binary file for read and write
For example to create a write access file called out.txt we use
name = fopen("out.txt","w");
i.e file name = out.txt
access = create /write text file
It is important to close all channels when finished; this is achieved by fclose i.e.
fclose(name);