Ich habe eine Datei mit einer großen Anzahl von Zahlen, jede Zahl ist durch ein Leerzeichen getrennt.Suchen Sie schnell einen Speicherort in einer Datei
Solche wie: 124 1212 5 654 74231 ...
Wie kann ich schnell die n-te Zahl in dieser Datei suchen?
denke ich fseek()
kann nicht funktionieren, da es durch Bytes gemessen ist, und ich kann durch die N-te Nummer erhalten:
int i;
for (i=0;i!=N-1;++i) fscanf(somefile,"%d",&variable);
Aber ich denke, es könnte eine Möglichkeit, effizienter sein?
Sobald Sie eine Stelle in der Datei mit fscanf und dergleichen gefunden haben, können Sie verwenden ftell(), um die Byte-Position des Dateizeigers zu erhalten, die Sie fseek passieren können zurückkehren dieser Ort ziemlich sofort. –
@MarcB Leider muss ich nicht zu einer Nummer zurückkehren, die ich gerade gefunden habe. Ich kann zurückgehen, nachdem ich Hunderttausende anderer Nummern gefunden habe. – goofy
Wenn die in der Datei gespeicherten Zahlen keine Eigenschaft besitzen (z. B. sind sie alle 3 Ziffern lang), ist die einzige Möglichkeit, die gesamte Datei zu lesen, bis Sie die N-te Ganzzahl erreichen. – mfontanini