bonjour. J'ai reussi a trouver en plaçant des messages de sortie avant et après dans l'exécution d'un programme que une fonction que j'avais écrite était responsable d'une erreur de segmentation. Je vous donne le code de cette fonction car je ne comprends pas pourquoi elle génère une erreur de segmentation lorsqu'elle est appelée. C'est une fonction qui concatène deux chaînes en faisant une allocation dynamique pour avoir une chaîne finale complète dont la taille en mémoire correspond strictement au nombre d'élèment. Voici ce que j'ai fait :
Je ne comprends pas pourquoi le programme plante juste à cet endroit, sans me donner la moindre indication de débogage. Je peux postuler que c'est parce que je passe peut être des chaînes trop longues en suffixe mais ça me paraît bizarre puisqque tout est calculé à l'octet près. Merci en tous cas de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <stdio.h> #include <stdlib.h> #include <string.h> char * add_suffixe(const char * name_in, const char * suffixe) { char * name_out; size_t name_length; size_t suffixe_length; size_t total_length; name_length = strlen( name_in ); suffixe_length = strlen( suffixe ); total_length=name_length+suffixe_length+1; name_out = malloc(total_length); if(name_out==NULL) { printf("erreur d'allocation memoire sur la chaine name_out\n"); } else { strncpy(name_out, name_in, name_length+1); printf("Le nom du fichier original est %s\n",name_in); strcat(name_out, suffixe); printf("le nom du fichier de sortie est %s\n",name_out); } return name_out; }
Je dois dire aussi que le deuxième argument de cette fonction (char * suffixe) est systématiquement un char * que j'obitens avec cette fonction :
Je ne veux pas poster mon algo en entier tout de suite je crois vraiment que l'erreur est dans add_suffixe mais pas moyen de la détecter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <string.h> #include <stdlib.h> #include <stdio.h> char * get_optiontextstring(const char * input_string) { char * index; int guillemet = '"'; index = strstr(input_string,"OptionText"); if(index!=NULL){ index = strchr(index,guillemet); } return index; }
Partager