Bonjour,
J'essaie de modifier un caractère d'une chaîne de caractères dans une structure manipulée par un pointeur.
Si on prend par exemple une structure qui inclut une chaîne de caractère dans sa définition :
Si plus loin je créé un pointeur de Voiture v. Je peux initialiser la Voiture pointée par v de plusieurs façons :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef struct{ int annee; char *marque; }Voiture;
Mais si je veux modifier le 3ème caractère du champ marque, j'obtiens systématiquement un segfault ou une erreur avec l'une ou l'autre de ces solutions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Voiture *v = (Voiture *)malloc(sizeof(Voiture)); v->marque = "Skoda"; (*v).marque = "BMV";
Je pourrais bien sûr réinitialiser le champ en entier mais j'aimerais vraiment comprendre comment faire. Quelqu'un aurait une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 (*v).marque[2] = 'W'; //segmentation fault v->marque[2] = 'W'; //segmentation fault v->(marque + 2) = 'W'; //erreur // etc...
Merci.
Partager