std:: ftell
|
Definiert in Header
<cstdio>
|
||
|
long
ftell
(
std::
FILE
*
stream
)
;
|
||
Gibt den aktuellen Wert der Dateipositionsanzeige für den Dateistrom
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 unspezifiziert und nur als Eingabe für std::fseek sinnvoll.
Inhaltsverzeichnis |
Parameter
| stream | - | zu untersuchender Dateistrom |
Rückgabewert
Dateipositionsanzeiger bei Erfolg oder - 1L bei Fehler. Setzt ebenfalls errno bei Fehlern.
Hinweise
Unter Windows kann
_ftelli64
verwendet werden, um mit Dateien größer als 2 GiB zu arbeiten.
Beispiel
Demonstriert die Verwendung von
std::ftell()
mit Fehlerüberprüfung. Schreibt und liest einige Gleitkommawerte (FP-Werte) von/zu einer Datei.
#include <cstdio> #include <cstdlib> #include <iostream> // 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; std::perror(func); std::cerr << func << " failed in file " << __FILE__ << " at line # " << line - 1 << '\n'; std::exit(EXIT_FAILURE); } int main() { // Prepare an array of FP values. constexpr int SIZE {5}; double A[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5}; // Write array to a file. const char* fname = "/tmp/test.bin"; FILE* file = std::fopen(fname, "wb"); check(file != NULL, "fopen()", __LINE__); const int write_count = std::fwrite(A, sizeof(double), SIZE, file); check(write_count == SIZE, "fwrite()", __LINE__); std::fclose(file); // Read the FP values into array B. double B[SIZE]; file = std::fopen(fname, "rb"); check(file != NULL, "fopen()", __LINE__); long pos = std::ftell(file); // position indicator at start of file check(pos != -1L, "ftell()", __LINE__); std::cout << "pos: " << pos << '\n'; const int read_count = std::fread(B, sizeof(double), 1, file); // read one FP value check(read_count == 1, "fread()", __LINE__); pos = std::ftell(file); // position indicator after reading one FP value check(pos != -1L, "ftell()", __LINE__); std::cout << "pos: " << pos << '\n'; std::cout << "B[0]: " << B[0] << '\n'; // print one FP value return EXIT_SUCCESS; }
Mögliche Ausgabe:
pos: 0 pos: 8 B[0]: 1.1
Siehe auch
|
ruft die Dateipositionsanzeige ab
(Funktion) |
|
|
bewegt die Dateipositionsanzeige zu einer bestimmten Stelle in einer Datei
(Funktion) |
|
|
bewegt die Dateipositionsanzeige zu einer bestimmten Stelle in einer Datei
(Funktion) |
|
|
gibt die Eingabepositionsanzeige zurück
(öffentliche Mitgliedsfunktion von
std::basic_istream<CharT,Traits>
)
|
|
|
gibt die Ausgabepositionsanzeige zurück
(öffentliche Mitgliedsfunktion von
std::basic_ostream<CharT,Traits>
)
|
|
|
C-Dokumentation
für
ftell
|
|