Bonjour,

J'ai un soucis avec le code se trouvant ci-dessous.
En particulier avec la fonction gestionEtiquettes.
Je passe un tableau de char* en paramètre, ainsi que d'autres char*
à un moment je souhaite mettre la valeur de etiq dans la case en cours du tableau
or, ce que je fais c'est que je fais pointer la case de mon tableau à la même case que le char*
ce qui ne m'arrange pas à dire vrai vu que je veux réutiliser mon tableau et ses nouvelles valeurs hors de ma fonction.
(sachant que quand je rentre manuellement une chaine de caractère (par exemple : "tata") dans mon tableau avec cette fonction, le tableau garde les valeurs initialisées à "tata" hors de la fonction)
Comment faire ?

voilà comment j'appelle ma fonction ainsi que les variables déclarées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
char* etiquettes[512] ;
char 	ligne[TOKENSIZE], op[TOKENSIZE], etiq[TOKENSIZE], ri[TOKENSIZE], rj[TOKENSIZE], rk[TOKENSIZE], nc[TOKENSIZE];
int tailleProg ;
 
gestionEtiquettes(etiquettes, op, ri, rj, rk, nc, &tailleProg, ligne, etiq) ;


Tokensize correspond à 79 et est déclaré ailleurs
voici maintenant le code de ma fonction :



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
29
30
/*
  Compilation:
  + compiler poly_parser.c: gcc -c poly_parser.c
  + compiler assembleur.c: gcc -std=c99 -o assembleur assembleur.c poly_parser.o
 */
 
#include <stdio.h> // pour manier les fichiers
#include <string.h> // pour manier les chaines de caractères
#include "poly_parser.h" // pour utiliser la fonction poly parser
 
void gestionEtiquettes(char* etiquettes[],char* op,char* ri, char* rj, char* rk, char* nc, int *tailleProg, char* ligne, char* etiq)
{
    int cpt = 0 ; 
    FILE* fic = fopen("essai.asm","r");
    while(fgets(ligne,79,fic) != NULL)
    {
	if (poly_parsing(ligne,etiq,op,ri,rj,rk,nc))
	{
	    etiquettes[cpt] = etiq ;
	    printf("nia etiquette : %s \n",etiquettes[cpt]) ;
	}
 
	cpt ++ ;
    }
    *tailleProg = cpt ;
    fclose(fic) ;
 
}
 
// Je fournirais la suite du code si besoin


merci d'avance (j'ai eu beau chercher sur google je n'ai rien trouvé ou pas compris ce qui m'était proposé)