Mathias Brodala: (C) Überschüssiges Leerzeichen

Beitrag lesen

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