flocate() dient zum expliziten Positionieren einer ISAM-Datei mit Satz-Ein-/Ausgabe. flocate() ändert die aktuelle Position des Lese-/Schreibzeigers der Datei mit Dateizeiger stream entsprechend den Angaben: Schlüsselwert key, Schlüssellänge keylen und Option option (_KEY_FIRST, _KEY_LAST, _KEY_EQ, _KEY_GE ).
FILE *stream ist der Dateizeiger einer ISAM-Datei, die im Modus type=record,forg=key geöffnet wurde (siehe fopen() , freopen() ).
void *key ist der Zeiger auf einen Bereich, der den Schlüsselwert enthält.
size_t keylen ist die Länge des Schlüsselwertes. Der Wert muss ungleich null sein.
Ist keylen kleiner als die Schlüssellänge der Datei, füllt flocate() den Schlüsselwert intern bis auf die Schlüssellänge der Datei mit binären Nullen auf und nimmt diesen generierten Schlüssel als Positioniergrundlage. Ist keylen größer als die Schlüssellänge der Datei, schneidet flocate() den Schlüsselwert intern von rechts bis auf die Schlüssellänge der Datei ab und nimmt diesen verkürzten Schlüssel als Positioniergrundlage. int option kann die folgenden in stdio.h definierten Werte enthalten:
_KEY_FIRST
| positioniert auf den Dateianfang. Die Parameter key und keylen werden ignoriert.. Das Positionieren ist auch in leeren Dateien erfolgreich. | _KEY_LAST
| positioniert auf das Dateiende. Die Parameter key und keylen werden ignoriert. Das Positionieren ist auch in leeren Dateien erfolgreich. | _KEY_EQ
| positioniert auf den ersten Satz mit dem angegebenen Schlüssel key. | _KEY_GE
| positioniert auf den ersten Satz mit dem Schlüsselwert größer oder gleich dem angegebenen Schlüssel key. | |