Supondo que seus dados estão em ordem cronológica:
- Obtenha o tamanho do arquivo procurando no final e fazendo
ftell()
; - Divida esse resultado por 2;
- Use
fseek()
para procurar esse local; - Procure o início da próxima linha chamando
getline()
once; - Use
strptime()
para descobrir em que data você está no momento; - Faça uma pesquisa binária, repetindo as etapas 4 e 5 até encontrar a linha desejada.