Bonjour,
Je vous explique mon problème.
J'ai un tableau à plusieurs dimensions :
automate[0][1]="a\0";
automate[0][2]="b\0";
automate[1][1]="b\0";
automate[1][2]="a\0";
automate[2][0]="b\0";
Je le passe par référence à une fonction censée modifiée ses valeurs.
La fonction ressemble à cela :
Pour vous expliquer mon problème, si j'affiche les valeurs de tmp après chaque tour de boucle, les résultats sont corrects.
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
31
32
33
34
35
36
37
38
39 for(n=0;n<nbPred;n++) for(p=0;p<nbSucc;p++){ char tmp[4096]=""; strcat(tmp ,accoD); // Creation de la grammaire pour le chemin pred[n] -> succ[n] strcat(tmp ,automate[pred[n]][noeud]); if(automate[noeud][noeud]!=" "){ strcat(tmp ,automate[noeud][noeud]); strcat(tmp ,"*\0"); } strcat(tmp ,automate[noeud][succ[p]]); strcat(tmp ,accoF); // Si chemin directe entre pred[n] -> succ[n] on l'ajoute avec un | if(automate[pred[n]][succ[p]]!=" "){ strcat(tmp ,"|\0"); strcat(tmp ,accoD); strcat(tmp ,automate[pred[n]][succ[p]]); strcat(tmp ,accoF); } printf("de %i à %i : %s \n",pred[n],succ[p],tmp); automate[pred[n]][succ[p]]=tmp; printf("après - %s \n",automate[pred[n]][succ[p]]); strcat(expr ,tmp); } ...
Mon tableau automate est bien modifié cependant, toutes les valeurs qui doivent être modifiées se retrouvent avec la dernière valeur de tmp et non leur valeur respective.
Comme si la valeur tmp etait un pointeur sur une valeur et que c'était l'adresse qui etait mis dans le tableau.
QUelqu'un pourrait m'aider ?
Merci d'avance
Partager