Dateigröße in C ermitteln
Variante 1: fseek + ftell
Code
#include <stdio.h>
FILE *f = fopen(path, "rb");
fseek(f, 0, SEEK_END);
long size = ftell(f);
fseek(f, 0, SEEK_SET);
fclose(f);
Variante 2: stat
C
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
struct stat st;
stat(path, &st);
off_t size = st.st_size;
Variante 3: File Descriptors, fstat()
C
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int fd = open(path, O_RDONLY);
struct stat st;
fstat(fd, &st);
off_t size = st.st_size;
close(fd);
Hilft natürlich alles nichts, wenn die Daten über stdin hereinkommen und man ein Binärformat parsen will, das in Version 1 aus einer fixen Datenstruktur besteht und optional in Version 2 von denselben Daten mit einer zusätzlichen (String-)Spalte gefolgt wird, an der man auch interessiert ist. Hilft aber abzuschätzen, ob letztere existiert, wenn sie stattdessen aus einer Datei kommen.