probleme de valeur retournée et seg fault
Salut a tous,
Je realise une fonction qui traite un char** et me retourne 2 parametres le premier un entier qui me donne le nombre de char* contenu dans mon deuxieme parametre de retour char**
voici le prototype de ma fonction :
Code:
1 2
|
int getPath(int argc, char** argv, char** path); |
path est mon deuxieme parametre de retour
Mais quand je veux faire un print de path[i]b dans ma fonction main
Code:
1 2 3 4
|
sizePath = getPath(argc, argv, allPath);
for(i=0;i<sizePath;i++){
printf("%s", allPath[i]);} |
ma console m'affiche segmentation fault.
Pour info je vous met l'implementation de getPath()
Code:
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 29 30 31 32 33 34 35 36 37 38 39
|
int getPath(int argc, char** argv, char** path)
{
int i, j = 0, count = 0;
int sizePath;
/*recherche du nombre de chemins passe en parametre*/
/*on commence a argv[1][] car argv[0][] contient le nom
du programme ce parametre ne nous interesse pas */
for(i = 1; i < argc; i++)
{
if(argv[i][0] == '-')
count++;
}
if(count!=0){
/*initialisation du char** */
/*le char** est un tableau a 2 dimension */
/*la 1ere contient des pointeurs sur des char* */
/*la 2nde contient des pointeurs sur char */
path = (char**)malloc(sizeof(char*)*count);
for(i = 0; i < count; i++)
path[i] = (char*)malloc(sizeof(char)*MAXBUFFER);
/*argc-count = x*/
for(i=1; i < count+1; i++)
{
sizePath = strlen(argv[i]);
for(j=2; j < sizePath; j++)
{
path[i-1][j-2] = argv[i][j];
}
path[i-1][sizePath-2] = '\0';
printf("%s\n", path[i-1]);
path[i-1] = standardizeString(path[i-1]);
printf("%s\n", path[i-1]);
}}
return count;
} |
merci d'avance pour votre aide
Re: probleme de valeur retournée et seg fault
Citation:
Envoyé par florent_de_brest
Salut a tous,
Je realise une fonction qui traite un char** et me retourne 2 parametres le premier un entier qui me donne le nombre de char* contenu dans mon deuxieme parametre de retour char**
voici le prototype de ma fonction :
Code:
1 2
|
int getPath(int argc, char** argv, char** path); |
Pose toi la question suivante.
Pourquoi le prototype de malloc() est-il
Code:
void *malloc(size_t size);
et non
Code:
void malloc(void *p, size_t size);
?
Quand tu auras la réponse à cette question tu sauras pourquoi ton code ne peut pas fonctionner.