Hallo Martin.
char a[] = "Ä";
char b[] = "B";
[...]a = Ä (2 Bytes)
b = B (1 Bytes)sehr schön - genau dieses Ergebnis hätte dir strlen() auch geliefert.
Womit du natürlich recht hast, doch …
Bist du jetzt also wirklich einen Schritt weiter?
… hat mich dies nun auf eine brauchbare Fährte geführt:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main(void) {
int i, ml;
char s[] = "Oberfläche";
setlocale(LC_CTYPE, "");
for (i = 0; s[i] != '\0'; ++i) {
ml = mblen(&s[i], MB_CUR_MAX);
printf("s[%d] = %c (%d Bytes)\n", i, s[i], ml);
}
return EXIT_SUCCESS;
}
Ausgabe:
$ ./test
s[0] = O (1 Bytes)
s[1] = b (1 Bytes)
s[2] = e (1 Bytes)
s[3] = r (1 Bytes)
s[4] = f (1 Bytes)
s[5] = l (1 Bytes)
s[6] = � (2 Bytes)
s[7] = � (-1 Bytes)
s[8] = c (1 Bytes)
s[9] = h (1 Bytes)
s[10] = e (1 Bytes)
Damit werde ich nun sicher eine Möglichkeit finden, die Anzahl der Zeichen in einer Zeichenkette zu ermitteln.
Einen schönen Sonntag noch.
Gruß, Mathias
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules