Problème avec strncpy

Signaler
Messages postés
16
Date d'inscription
mardi 5 août 2003
Statut
Membre
Dernière intervention
26 août 2003
-
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
-
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

Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
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+
Messages postés
41
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
28 avril 2010

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-)
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
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+