0 Tage Serie
c / intermediate
Snippet

Bestimmung der Dateigröße mit fseek und ftell

Um die Größe einer Datei zu messen, ohne jedes Byte zu lesen, können Sie zum Ende des Streams springen und die Position abfragen. Dies ist essenziell, um genau genug Speicher zuzuweisen, um den Inhalt einer Datei in einen Buffer zu laden.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
long get_file_size(const char *path) {
FILE *file = fopen(path, "rb");
if (!file) return -1;
fseek(file, 0L, SEEK_END); // Move pointer to end
long size = ftell(file); // Get current offset
fclose(file);
return size;
}
int main(void) {
long bytes = get_file_size("example.bin");
if (bytes != -1) printf("File size: %ld bytes\n", bytes);
return 0;
}
Erklärung
1
fseek(file, 0L, SEEK_END)
Setzt den Dateipositionsanzeiger an das absolute Ende der Datei.
2
ftell(file)
Gibt den aktuellen Wert des Positionsanzeigers zurück (Anzahl der Bytes vom Start).