File Browser
Problem 1
int fgetpos(FILE *stream)
{
return (stream->current_byte - stream->first_byte);
}
Problem 2
bool fsetpos(FILE *stream, int offset)
{
if (offset >= stream->size || offset < 0)
{
return false;
}
stream->current_byte = stream->first_byte + offset;
return true;
}
Problem 3
bool fwrite(BYTE *buffer, int size, FILE *stream) {
if (buffer == NULL)
{
return false;
}
if (stream->read_only)
{
return false;
}
int start = stream->current_byte;
for (int i = 0; i < size; i++)
{
*(stream->current_byte) = buffer[i];
stream->current_byte++;
}
if ((start + size) > stream->size)
stream->size = start + size;
return true;
}
Problem 4
bool feof(FILE *stream)
{
return (stream->current_byte - stream->first_byte) >= stream->size;
}