Problème avec strncpy

moloko2000 Messages postés 16 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2003 - 18 août 2003 à 15:21
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 - 27 août 2003 à 14:57
lorsque j'utilise strncpy je n'arrive pas à copier le nombre de caractères souhaités

Par exemple lorsque je fais

strncpy(temp,tab_res[0].timeStamp,8);

au lieu de me copier 8 caractère il en copie 9

temp à la valeur suivante:

200206051 soit 9 caractères au lieu de 8 je n'y comprend rien

D'ou sort ce 1 qui m'est rajouté?

3 réponses

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
18 août 2003 à 15:41
ta chaine de caractères est lue jusqu'au caractère null '\0' et donc tu dois faire :

strncpy(temp,tab_res[0].timeStamp,8);
temp[8]='\0';
a+
0
Bub325 Messages postés 41 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 28 avril 2010
27 août 2003 à 10:42
Il est inutil de faire ça puisque strncpy ajoute de lui même le caractère '\0'. et c'est lui le 9ème caractère qui pose tant de problème, il sert seulment a indiquer la fin de la chaine de caractère

Bub325
Le codeur pas comme tout le monde
8-)
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
27 août 2003 à 14:57
Tu n'a pas tord mais regarde la description de strncpy()
Description
Copies a given number of bytes from one string into another, truncating or padding as necessary.
strncpy copies up to maxlen characters from src into dest, truncating or null-padding dest. The target string, dest, might not be null-terminated if the length of src is maxlen or more.
Il y a donc des possibiliés d'eereur s'il ne maitrise pas la taille de ses chaines de caractères. Alors dans le doute rajoutée se qu'il faut ou il faut. Sans oublier qu'en C l'indexation commence à 0 et une chaine de 8 caractères se termine à l'index 8 par '\0'.
Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0
Rejoignez-nous