Partage
  • Partager sur Facebook
  • Partager sur Twitter

Debutant... Pointeur sur tableau à 2 dimensions ?

Mario Sokoban

    27 octobre 2019 à 0:03:34

    Bonjour à tous, je suis entrain d'essayer de faire le TP Mario Sokoban (où j'ai beaucoup du mal... même en regardant la réponse... donc j'essaye de le faire moi même)

    Et j'ai un petit problème, dans un fichier .c j'ai cet ligne là :

    chargerNiveau1(&carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR], &position1X, &position1Y);

    qui doit "mener" à cet fonction là :

    void chargerNiveau1(int* carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR], int* positionMarioAX, int* positionMarioAY)

    Or, j'ai une erreur incompréhensible :

    error: cannot convert 'int**' to 'int* (*)[12]' for argument '1' to 'void chargerNiveau1(int* (*)[12], int*, int*)'

    J'ai pensé qu'on ne peut pas mettre de pointeurs sur les tableaux, est-ce le cas ?

    Si oui, quel autre solution pourrais-je faire ?

    (Oui mon programme sur Mario Sokoban est très mal fait... J'ai beaucoup de problèmes la dessus mais j'essaye de faire le mieux possible, donc pas besoin de me dire que je suis nul ou peut importe...)

    Merci d'avance

    -
    Edité par DemonForce 27 octobre 2019 à 0:13:47

    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2019 à 0:31:45

      Ton appel de fonction n'est pas correcte, tu envois l'adresse d'une case qui est en dehors de ton tableau !

      Un tableau est toujours passé par adresse aux fonctions. Pour passer un tableau à une fonction on envois l'adresse de son premier élément. A savoir que quand tu écris le nom d'un tableau seul sans les crochets, ça renvoi justement l'adresse de son premier élément.

      • Partager sur Facebook
      • Partager sur Twitter
        27 octobre 2019 à 1:32:18

        Ah d'accord, je pense avoir compris, il suffit donc que j'enlève les crochets du tableau carte dans l'appel fonction ?

        (Au passage, j'ai une autre question : Es-ce possible de lire & modifier un fichier .txt mais sans l'enregistrer ?)

        Merci d'avance

        -
        Edité par DemonForce 27 octobre 2019 à 2:39:51

        • Partager sur Facebook
        • Partager sur Twitter
          27 octobre 2019 à 7:02:06

          La définition de la fonction dit qu'elle reçoit un tableau (2d) de pointeurs d'entiers

          Tu lui passes l'adresse d'un élément du tableau.

          Ce n'est pas une question d'ajouter enlever des étoiles et des crochets, mais

          • De réfléchir à ce que tu veux faire
          • Le traduire en code.

          Et pour finir, il serait plus efficace qu'au lieu de demander si il suffit que tu fasses ceci cela, tu commences par essayer.

          Comme ça, on verra ce que tu as écrit, et on pourra te dire pourquoi ça ne marche toujours pas, si tu ne trouves pas tout seul.

          -
          Edité par michelbillaud 27 octobre 2019 à 7:12:18

          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2019 à 10:55:01

            DemonForce a écrit:

            AEs-ce possible de lire & modifier un fichier .txt mais sans l'enregistrer ?)

            Pour lire oui, mais pour le modifier, il va bien falloir l’enregistrer.
            • Partager sur Facebook
            • Partager sur Twitter

            Debutant... Pointeur sur tableau à 2 dimensions ?

            × 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.
            • Editeur
            • Markdown