• [^] # Re: Survivor

    Posté par . En réponse au journal C, un âge remarquable. Évalué à 5.

    Si tu supposes qu'un char code un charactère, peut être... C'est faux avec tous les encodings communs comme utf-8, utf-16, utf-32, même pas besoin de sortir l'étonnant UTF-7 (si si, ça existe, j'en ai vu des fois, ça fait très bizarre). En utf-8, un charactère peut occuper entre 1 et 4 bytes, en utf-16 2 ou 4, en utf-32 toujours 4. Et je te parle même pas du fait qu'il y a plusieurs façon de représenter le même charactère qui vont avoir des tailles différentes...

    La doc est d'ailleurs explicite, ça ne renvoit pas le nombre de char mais le nombre de bytes. Strlen ne renvoit pas la longueur d'une chaine mais la taille de sa représentation mémoire.

    En pratique, si tu as besoin d'accéder et travailler sur le texte, les chaînes C sont inutilisables vu qu'il n'y a pas de notion d'encoding, impossible d'itérer charactère par charactère, de passer en lowercase/uppercase tout en te laissant l'impression que tu peux.

    C'est ça entre autre qui donne une fausse impression de facilité, qu'il suffit de bien faire... mais faire du C ça doit aujourd'hui être vraiment un choix mûrement réfléchi parce que c'est un vrai champs de mines.