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.