I'm reading through K&R C. In t he back there's some sample fopen
code. I don't particularly understand one part.
#define OPEN_MAX 20
FILE _iob[OPEN_MAX] = {
{ 0, NULL, NULL, _READ, 0 }, // _READ = 01
{ 0, NULL, NULL, _WRITE, 1 }, // _WRITE = 02
{ 0, NULL, NULL, _WRITE | _UNBUF, 2 } // _UNBUF = 04
};
FILE *fopen(char *name, char *mode)
{
FILE *fp;
for (fp = _iob; fp < _iob + OPEN_MAX; fp++)
/* ... */
}
The statement fp < _iob + OPEN_MAX
is what's tripping me up.
fp
: file pointer_iob
: file arrayOPEN_MAX
: integer
It seems to be adding a file array to an integer, then evaluating whether or not it's larger than a file pointer! How is the statement fp < _iob + OPEN_MAX
possible?