Copier un tableau char dans un autre tableau char
Résolu
emmy_2019
Messages postés
63
Statut
Membre
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour,
J'ai une structure comme ceci:
Et une autre structure :
Je veux copier la valeur de Result[i].Heure dans Comptage[i].Heure, J'ai essayé avec memcpy, strcpy mais j'ai eu une segmentation Fault.
Avez-vous une idée svp?
Merci
J'ai une structure comme ceci:
typedef struct { char Heure[80]; int ID; int Nombre_Mont; int Nombre_Desc; }Comptage;
Et une autre structure :
typedef struct { char Heure[80]; char *receive; }Result;
Je veux copier la valeur de Result[i].Heure dans Comptage[i].Heure, J'ai essayé avec memcpy, strcpy mais j'ai eu une segmentation Fault.
for( i=1; i<count; i++) { GetXmlTagValue(Result_[i].receive,"DoorID",Tag1,TagValue); GetXmlTagValue(Result_[i].receive,"In",Tag1,TagValue1); GetXmlTagValue(Result_[i].receive,"Out",Tag1,TagValue2); LOG_INFO("Server: i=%d, Time = %s , ID =%d Nombre_Mont =%d Nombre_Desc=%d", i, Result_[i].Heure, atoi(TagValue), atoi(TagValue1),atoi(TagValue2)); //Count_Pass[i].Heure = malloc(81); //strcpy(Heure, Result_[i].Heure); //strcpy(Count_Pass[i].Heure, Heure); memcpy(Count_Pass[i].Heure, Result_[i].Heure,80); //memcpy(Count_Pass[i].Heure, Result_[i].Heure, 81); Count_Pass[i].ID = atoi(TagValue); Count_Pass[i].Nombre_Mont = atoi(TagValue1); Count_Pass[i].Nombre_Desc = atoi(TagValue2); LOG_INFO("Server: ID= %d Nombre de Montée=%d, Nombre de Desc=%d", Count_Pass[i].ID, Count_Pass[i].Nombre_Mont, Count_Pass[i].Nombre_Desc); }
Avez-vous une idée svp?
Merci
Configuration: Windows / Chrome 74.0.3729.157
A voir également:
- Copier un tableau dans un autre en c
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Comment faire un tableau croisé dynamique - Guide
1 réponse
Salut emmy_2019,
Si ce que tu veux copier se trouvant dans un tableau de
Si ce qui est stocké n'est pas une chaîne C, utilise
Si tu as une erreur de segmentation de mémoire, alors que tu te trouves dans les hypothèses ci-dessus, ton erreur doit venir d'autre chose que tu fais et qui corrompt la mémoire, ou les hypothèses que tu décris ne correspondent pas à ce que tu fais réellement.
Dal
Si ce que tu veux copier se trouvant dans un tableau de
char Heure[80];est une chaîne C, c'est à dire une suite de char stockés dans le tableau y compris le caractère terminateur de chaîne
'\0', tu devrais utiliser
strcpy(), qui ne devrait pas poser de problèmes pour copier la chaîne vers un autre tableau de char de même taille
strcpy(dest, orig).
Si ce qui est stocké n'est pas une chaîne C, utilise
memcpy(dest, orig, sizeof(dest));sur ces deux tableaux (de type
char Heure[80];selon ce que tu dis).
Si tu as une erreur de segmentation de mémoire, alors que tu te trouves dans les hypothèses ci-dessus, ton erreur doit venir d'autre chose que tu fais et qui corrompt la mémoire, ou les hypothèses que tu décris ne correspondent pas à ce que tu fais réellement.
Dal
fonctionne sans aucun problème :