Moin,
char *c = "a"; printf("%d %d", sizeof c, strlen(c)); 4 1
4 ist die Byte-Länge des Pointers, 4*8 = 32 Bit , das ist das was meine Kiste hergibt. 1 heißt ein Byte. Wenn ich da ein ä reinsetze sind es 2 Bytes (utf8).
Richtig?
Bei UTF-8, ja – abgesehen davon, dass %d
die falsche Formatangabe für size_t
ist! Wie oft soll man dir das eigentlich noch erklären, bis du mal einen size_t
hast, der $$\ge 2^{31}$$ ist?!
Aber um die Verwirrung noch etwas zu steigern:
char c[] = "a";
printf("%lu %lu\n", sizeof c, strlen(c));
2 1
Viele Grüße
Robert