I'm not sure what you mean by "EDA report" or "lines". Is it a text file?
If it's a text file, try finding an efficient version of the UNIX/Linux/GNU "tail" utility. It outputs the last few lines of a file. Then pipe it through something like "tac" to reverse the lines. Some versions of "tail" include a line reverse option.
You could open the file in binary mode (maybe faster than text mode), then fseek(fp, 0, SEEK_END) to the end of the file, and then use fseek() and fread() to step backwards and read a few kilobytes at a time until you find the 100 lines you want. I'm guessing this is how "tail" works.
If you know approximately how many bytes you need to read from the end of the file, then you could open it in binary mode, fseek(fp, offset, SEEK_END) to that position, and then fread() the whole tail end into memory. That should go really fast.