Hallo Robert,
abgesehen davon, dass
%ddie falsche Formatangabe fürsize_tist!
Nein, es ist der richtige. Es fehlt nur der length modifier z:
Length modifier
Here, "integer conversion" stands for d, i, o, u, x, or X conversion. […]
- z A following integer conversion corresponds to a size_t or ssize_t argument, or a following n conversion corresponds to a pointer to a size_t argument.
Das richtige Format für size_t ist "%zd" (bzw "%zx" wenn der Wert hexadezimal dargestellt werden soll).
Wie oft soll man dir das eigentlich noch erklären, bis du mal einen
size_thast, der $$\ge 2^{31}$$ ist?!
Ja, der length modifier z sollte wirklich nicht fehlen.
char c[] = "a"; printf("%lu %lu\n", sizeof c, strlen(c)); 2 1
Dann auch eher so:
char c[] = "a";
printf("%zu %zu\n", sizeof c, strlen(c));
LG,
CK