ftell
Von cppreference.com
| Definiert in Header <stdio.h> |
||
| long ftell( FILE* stream ); |
||
Gibt den Dateipositionierungsindikator für den Dateistream stream zurück.
Wenn der Stream im Binärmodus geöffnet ist, ist der von dieser Funktion erhaltene Wert die Anzahl der Bytes vom Anfang der Datei.
Wenn der Stream im Textmodus geöffnet ist, ist der von dieser Funktion zurückgegebene Wert undefiniert und nur als Eingabe für fseek() sinnvoll.
Inhalt |
[bearbeiten] Parameter
| stream | - | zu untersuchender Dateistream |
[bearbeiten] Rückgabewert
Dateipositionierungsindikator bei Erfolg oder -1L bei Fehler.
Bei einem Fehler wird die Variable errno auf einen implementierungsdefinierten positiven Wert gesetzt.
[bearbeiten] Hinweise
Unter Windows kann _ftelli64 verwendet werden, um mit Dateien zu arbeiten, die größer als 2 GiB sind.
[bearbeiten] Beispiel
Demonstriert ftell() mit Fehlerprüfung. Schreibt dann einige Fließkommazahlen (FP) in/aus einer Datei und liest sie.
Führen Sie diesen Code aus
#include <stdio.h> #include <stdlib.h> /* If the condition is not met then exit the program with error message. */ void check(_Bool condition, const char* func, int line) { if (condition) return; perror(func); fprintf(stderr, "%s failed in file %s at line # %d\n", func, __FILE__, line - 1); exit(EXIT_FAILURE); } int main(void) { /* Prepare an array of FP values. */ #define SIZE 5 double A[SIZE] = {1.1, 2.0, 3.0, 4.0, 5.0}; /* Write array to a file. */ const char* fname = "/tmp/test.bin"; FILE* file = fopen(fname, "wb"); check(file != NULL, "fopen()", __LINE__); const int write_count = fwrite(A, sizeof(double), SIZE, file); check(write_count == SIZE, "fwrite()", __LINE__); fclose(file); /* Read the FP values into array B. */ double B[SIZE]; file = fopen(fname, "rb"); check(file != NULL, "fopen()", __LINE__); long int pos = ftell(file); /* position indicator at start of file */ check(pos != -1L, "ftell()", __LINE__); printf("pos: %ld\n", pos); const int read_count = fread(B, sizeof(double), 1, file); /* read one FP value */ check(read_count == 1, "fread()", __LINE__); pos = ftell(file); /* position indicator after reading one FP value */ check(pos != -1L, "ftell()", __LINE__); printf("pos: %ld\n", pos); printf("B[0]: %.1f\n", B[0]); /* print one FP value */ return EXIT_SUCCESS; }
Mögliche Ausgabe
pos: 0 pos: 8 B[0]: 1.1
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.21.9.4 Die Funktion ftell (p: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.21.9.4 Die Funktion ftell (p: TBD)
- C11-Standard (ISO/IEC 9899:2011)
- 7.21.9.4 Die Funktion ftell (p: 337-338)
- C99-Standard (ISO/IEC 9899:1999)
- 7.19.9.4 Die Funktion ftell (p: 303-304)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.9.9.4 Die Funktion ftell
[bearbeiten] Siehe auch
| holt den Dateipositionierungsindikator (Funktion) | |
| verschiebt den Dateipositionierungsindikator an eine bestimmte Stelle in einer Datei (Funktion) | |
| verschiebt den Dateipositionierungsindikator an eine bestimmte Stelle in einer Datei (Funktion) | |
| C++ Dokumentation für ftell
| |