Bonjour ! Qu'est sensée faire la ligne 11 ? Je ne suis pas spécialiste des pointeurs, mais j'ai toujours mis un pointeur à gauche d'un appel à 'malloc', pas toi ?
Ah, les pointeurs! Je parie que le prototype de init_table() t'a été imposé! Ah, les profs!
Ligne 7, il ne faut pas être radin et mettre le bon nombre d'étoiles devant plateau (et en l'appelant adr_de_plateau ça serait plus lisible, voir ma ligne au sujet de PLATEAU) Ligne 11, bien vu il faut mettre des étoiles devant adr_de_plateau. Mais arrêtons nous au juste nombre. Ligne 11 encore, ce que tu veux allouer ce sont Y pointeurs donc, il faut en réserver : Y x tailleDUnPointeur. Ligne 14. En l'appelant adr_de_plateau, on peut plus facilement trouver la syntaxe (*adr_de_plateau)[i] Ligne 22. - Tu veux mettre à jour TX, donc tu passes son adresse - tu veux mettre à jour TY, donc tu passes son adresse - tu veux mettre à jour PLATEAU, donc ...
Et le compilateur est là pour t'aider, il voit quand les types ne correspondent pas et te le signale par des warnings.
EDIT: CA MARCHE : À LA LIGNE 12 IL NE FALLAIT METTRE AUCUNE ÉTOILE !!!!!!!!
Pas fausse joie ! Active les Warning ! Tu n'as pas suivie les conseils de Dalfab !
Je ne sais pas quel est le but de ton code, mais il est vraiment bancal ! C'est tellement bancal qu'on ne sait même pas par quel bout y prendre.
malloc retourne l'adresse de l'allocation mémoire, normalement on la stocke dans un pointeur, or toi tu la stocke dans un entier (vu que tu déréférence le pointeur). entre parenthèse on ne cast (transtype) pas le retour de malloc !
Il ne faut pas oublier que les paramètres de fonction sont passés par copie aux fonctions (le paramètre est une variable locale à la fonction qui reçois une copie de la valeur passé en argument). Donc pour que la fonction modifie la variable envoyé à la fonction on envoi son adresse (comme tu as fait pour TX et TY) C'est aussi valable pour les pointeurs qui sont des variables comme les autres, à la différence qu'il sont censé stocker des adresses.
Quelques remarque : Tes variables globales sont complètement inutiles (elles devraient être déclarées dans la fonction main). On évite les noms de variable en MAJUSCULES, on réserve cela aux macros.
Pour ton erreur sur le printf, ça vient de ce que ton pointeur TABLEAU n'a pas été modifié et ne pointe sur aucun tableau pour les raisons que je t'ai expliqué plus haut !
Quand ça plante on prend un debugger et on regarde où ça a planté, on ne s'amuse pas à deviner ni à poster sur un forum que quelqu'un devine à ta place. Active aussi les warnings ça aide.
Quand après ça tu n'arrives toujours pas à résoudre le problème ni la cause, alors dans ce cas tu peux poser la question.
Concernant ton code, il y a tellement rien qui va qu'il serait fastidieux de tout énumérer. Je te recommande de recommencer à lire un cours sur les pointeurs et le passage en paramètre. Note aussi que les double pointeurs sont une réelle plaie à manipuler et une source de problème intense.
- Edité par markand 14 juin 2021 à 10:00:35
git is great because Linus did it, mercurial is better because he didn't.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.
En recherche d'emploi.
git is great because Linus did it, mercurial is better because he didn't.