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
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 endlong size = ftell(file); // Get current offsetfclose(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).