Domanda

Sono di fronte a fornire una sorta di accesso rapido ai dati selezionati nei file Gigabyte. Una volta individuato il punto di partenza, il successivo accesso sarebbe sequenziale. I file includono una data nella parte anteriore di ciascun record e la data aumenta in tutto il file. Non voglio iniziare all'inizio e leggere il file ignorando cose nella parte anteriore. Sono interessato solo alle applicazioni Windows. Vorrei aprire il file in modalità testo.

Si verifica a me che potrei fare qualche tipo di ricerca binaria utilizzando il fseek / ftell a 64 bit o le funzioni FSETO / FETPOS. Mi rendo conto che potrei cercare nel mezzo di un record delimitato da newline, ma uno penserebbe che potresti semplicemente saltare qualsiasi record parziale con una chiamata fogli.

Fseek offre il meccanismo di origine Seek_end in modo da sembrare che potesse essere utilizzato con un FTELL per determinare le dimensioni del file. Non vedo una struttura simile con FSETO / FETGOS. Come si ottiene la dimensione del file se sei andato con FSEPOS / FGGEPOS?

_FSEEYI64 / _FTELLI64 Utilizzare INT64 e FPOS_T utilizzati da FSEPOS / FGPOPOS è anche INT64 quindi dovrei essere in grado di fare aritmetica sui puntatori.

o sono fuori dalla pista sbagliata qui? Dovrei considerare qualche altro approccio?

È stato utile?

Soluzione

_fseeki64 / _ftelli64 Fai esattamente quello che vuoi, quindi perché esiti a usarli?Il tuo approccio va bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top