To be safe, closing and opening the file would be probably the best solution in general. However, calling lseek in addition to fseek would work. However it suffers from the same limitations as solution #3 which is that once you call it, you should not use the FILE routines to read the file anymore.