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é)
Partager