Je travaille sur un code C et j'ai du mal à trouver un moyen de terminer une chaîne après un certain nombre de caractères. Par exemple, je dois terminer la chaîne data
après 3 caractères. Si c'est une chaîne ASCII, je peux faire quelque chose commeTermine (éventuellement) une chaîne multi-octets?
data[3] = 0;
Mais dans mon cas, l'un des personnages pourrait être multi-octets comme E ou A. Quel serait le meilleur moyen de terminer une telle chaîne après un nombre donné de caractères?
MISE À JOUR:
En gros:
char s_mon[7];
setlocale(LC_ALL, "");
strftime(s_mon, 7, "%b", tick_time);
locale actuelle est le français. Le mois est stocké comme "févr". Besoin d'être "fév", mais cela doit être universel, donc des entrées comme "mars" pourraient aussi être coupées en 3 caractères.
Quelle est la déclaration de 'data' –
Selon l'encodage (vous devez savoir ce que vous utilisez encodage), il existe des règles précises pour l'utilisation de séquences multi-octets. Vous analysez la chaîne de gauche à droite, en tenant compte de ces règles, jusqu'à ce que vous dépassiez le Nième caractère. Ensuite, vous pouvez mettre un zéro (pour UTF-8, un seul 0 est ok par exemple). – linuxfan
'È',' À' ne demandent pas de "multi-octets". Avec [8859-1] (https://en.wikipedia.org/wiki/ISO/IEC_8859-1) ils sont simplement les codes 200 et 192. Quel est le jeu de caractères que vous utilisez? Comment le code at-il lu le texte en premier lieu? – chux