const char *texte = "àçèé§"; //"∆t←😇" "1€" "àçèé§" "Coucou" "ils∆t←😇 sont1€"(14)
const char *texte2 = "ils∆t←😇 sont1€";
const char *texte3 = "1€";
const char *texte4 = "Coucou";
size_t longueur(const char *txt);
void setup() {
Serial.begin(115200);
Serial.print("texte : "); Serial.println(longueur(texte));
Serial.print("texte2 : "); Serial.println(longueur(texte2));
Serial.print("texte3 : "); Serial.println(longueur(texte3));
Serial.print("texte4 : "); Serial.println(longueur(texte4));
}
void loop() {}
size_t longueur(const char *txt) {
if (txt == nullptr) return 0;
size_t len = 0;
while (*txt) { // tant qu'on atteint pas le zéro terminal
//si on applique un masque de ET binaire 0b11000000 à l'octet testé et qu'il est <> 0b10000000 alors on incrémente len
if ((*txt & 0b11000000) != 0b10000000) len++; // ici on supprime les octets dits de continuité
txt++; // on incrémente l'adresse du pointeur
}
return len;
}