Bonsoir à vous,
Voilà je m'explique, lors de la compilation avec mon makefile. L'erreur suivante se produit:
Maintenant je vous explique en quoi consiste mon programme. Alors c'est assez simple (d'après mon prof ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 "Fichier.ini", line 20: warning: old-style declaration or incorrect type for: NOEUD "Fichier.ini", line 20: syntax error before or at: Noeud "Fichier.ini", line 20: warning: old-style declaration or incorrect type for: Noeud "Fichier.ini", line 21: too many initializers for scalar
Il s’agit de suivre l’évolution de petits robots dans un atelier.
Un robot se déplaçant d’un point à un autre par le chemin le plus court.
De plus, les allées sont trop étroites pour que 2 robots puissent se croiser. Donc si un robot se
trouve dans une allée, aucun autre robot ne peut s’engager. Il doit donc attendre sur un
carrefour que l’allée se libère.
Pour cela on donne :
- le programme Controle.c
- le programme Robot.c
- le programme Chemin.c
- le fichier fichier.ini
Controle.c :
Ce programme
- crée les ressources nécessaires à l’application, ( dans l’état actuel, la file de
messages),
- lance les exécutables (Chemin et Robot),
- attend une demande de chemin de la part d’un robot
- transmet au processus Chemin l’identificateur du Robot, les points de départ et
d’arrivée.
- attend une saisie suivante.
Chemin.c :
Ce programme reçoit de Controle le pid du processus Robot ainsi que les points de départ et
d’arrivée.
Il calcule le trajet le plus court entre les 2 points,( si c’est possible,) et le transmet au
processus Robot.
L’algorithme de recherche du chemin le plus court est donné.
(Il ne s’agit pas de l’algorithme le plus performant, mais ce n’est pas le problème ici)
Robot.c :
Il lit dans un vecteur la destination, et demande le trajet suivant.
Il reçoit le chemin à parcourir .
Il attend 3 secondes, recommence avec la destination suivante.
fichier.ini :
C’est un fichier d’initialisation qui contient la description de l’atelier et les chemins possibles.
Ce fichier sera modifié en fonction d’un nouvel atelier.
Le schéma est donné dans le fichier.ini.
Voilà ce que j'ai dans mon Fichier.ini
On me demande pour commencer de charger le schémas de l'atelier dans une mémoire partagée. La mémoire partagée, je sais comment la créer. Le problème est que je ne sais pas comment placer le tableau se trouvant dans le fichier.ini dans ma mémoire partagée. Un camarade m'as dit qu'en incluant le "fichier.ini" dans mon code de "controle.c", l y aurait moyen que je fasse un memcpy du fichier dans ma mémoire. Pourtant lorsque j'inclu ce dernier dans mon code, il me fait un message d'erreur (cf début du post).
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
40
41
42
43
44
45
46
47
48 char Atelier[][17] = { "X+++X+++X X X", "+ + + ", "+ + + ", "+ + + ", "X X+++X X+++X", "+ + + + +", "+ + + + +", "+ + + + +", "X+++X X X X", "+ + + + +", "+ + + + +", "+ + + + +", "X X X X X", "+ + + + +", "+ + + + +", "+ + + + +", "X+++X+++X+++X+++X" }; NOEUD Noeud[] = { { 0, { 0, 0, 0, 0}}, { 0, { 2,11, 0, 0}}, { 0, { 1,12, 3, 0}}, { 0, { 2,13, 4, 0}}, { 0, { 3,14, 5, 0}}, { 0, { 4,15, 0, 0}}, { -1, { 0, 0, 0, 0}}, { -1, { 0, 0, 0, 0}}, { -1, { 0, 0, 0, 0}}, { -1, { 0, 0, 0, 0}}, { -1, { 0, 0, 0, 0}}, { 0, { 1,21,12, 0}}, { 0, { 2,11,17, 0}}, { 0, { 3,18, 0, 0}}, { 0, { 4,19, 0, 0}}, { 0, { 5,20, 0, 0}}, { -1, { 0, 0, 0, 0}}, { 0, {18,22,12, 0}}, { 0, {17,23,13, 0}}, { 0, {14,20, 0, 0}}, { 0, {19,15, 0, 0}}, { 0, {11,22, 0, 0}}, { 0, {21,17,23, 0}}, { 0, {22,18, 0, 0}}, { -1, { 0, 0, 0, 0}}, { -1, { 0, 0, 0, 0}}, { -1, { 0, 0, 0, 0}}, };
Voilà alors ma question est simple, quelqu'un pourrait-il me dire comme je peux faire pour placer le contenu du fichier.ini dans la mémoire partagée? Sachant que le fichier.ini peut être modifié et n'aura peut-être plus les même dimensions que celui que l'on m'a donné au départ.
Si jamais je trouve la solution, je vous le signalerais leplus rapidement possible, peut-être que ça vous interresse.
p.s.:pour ceux qui veulent, je veux bien mettre tous les fichiers en pièces jointes. (sur demande bien évidement)
p.s.1: je fait mon allocation de mémoire partagée avec les fonctions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 idMP = shmget(CMP, sizeof(MEMPART), IPC_CREAT|IPC_EXCL|0700); pMP= (MEMPART*) shmat(idMP,0,0);
Partager