begin process at 2010 02 10 02:02:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Passage d'un tableau a 2 dim a une fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passage d'un tableau a 2 dim a une fonction

jeudi 20 mars 2008 à 14:15:45 | Passage d'un tableau a 2 dim a une fonction

AsM0DeUz

Membre Club

Bonjour,

Quand je compile le code ci-dessous j'ai ce message d'erreur :

gcc -ansi -Wall -o fow fow.c

fow.c: In function 'main':

fow.c:28: warning: passing argument 1 of 'dispmap' from incompatible pointer type

et j'ai un segmentation fault a l'execution. L'appel a la fonction semble mauvais mais pq ?

Merci

     1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4
  5 #define MATMAXX 10
  6 #define MATMAXY 10
  7
  8 void dispmap(int **, int, int);   
  9
 10 typedef struct dot
 11 {
 12         int coordX;
 13         int coordY;
 14 } dot;
 15
 16 typedef struct wall
 17 {
 18         dot begin;
 19         dot end;
 20 } wall;
 21
 22
 23 int main(int argc, char *argv[])
 24 {
 25         int map[MATMAXX][MATMAXY];
 26        
 27         test=map;
 28         memset(*map, 0, sizeof(map));
 29         dispmap(map, MATMAXX, MATMAXY);
 30 
 31         return 0;
 32 }
 33
 34 void dispmap(int **toDisplay, int x, int y)
 35 {
 36         int i,j;
 37        
 38         for(i=0;i<x;i++)
 39                 for(j=0;j<y;j++)
 40                 {
 41                         printf("%c", toDisplay[i][j]);
 42                 }
 43         return;
 44 }


jeudi 20 mars 2008 à 14:37:29 | Re : Passage d'un tableau a 2 dim a une fonction

DeAtHCrAsH

Salut,
Deux remarques :
1) test=map ? tu utilises une variable non référencé et qui en plus ert a rien!
2) Qu'est ce que un memset fait ici ?! Tu as défini ton tableau avec des tailles fixes, tu ne doit en aucun cas y faire une alloc!

Shell
jeudi 20 mars 2008 à 14:39:21 | Re : Passage d'un tableau a 2 dim a une fonction

jfrancois

Réponse acceptée !
Bonjour,

Il y a eut un post sur le même sujet hier :
Sujet : [C] incompatibilité dans une fonction [ Divers / Divers ] (The_KniGhT_972)

Ce qui donne cette solution possible :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MATMAXX 10
#define MATMAXY 10

void dispmap(int*,int,int);

typedef struct dot
{
   int coordX;
   int coordY;
} dot;

typedef struct wall
{
   dot begin;
   dot end;
} wall;

int main(int argc, char *argv[])
{
   int map[MATMAXX][MATMAXY];
   memset(map,0,sizeof(map));
   dispmap((int*)map,MATMAXX,MATMAXY);
   return 0;
}

void dispmap(int *toDisplay,int x,int y)
{
   int i,j;
   for(i=0 ; i<x ; i++)
   {
      for(j=0 ; j<y ; j++) printf("%d ",toDisplay[i * y + j]);
      printf("\n");
   }
}


Jean-François

jeudi 20 mars 2008 à 14:52:04 | Re : Passage d'un tableau a 2 dim a une fonction

AsM0DeUz

Membre Club
Deux remarques :
1) test=map ? tu utilises une variable non référencé et qui en plus ert a rien!

Euhhh c'est un oubli, il n'a pas de raison d'etre

2) Qu'est ce que un memset fait ici ?! Tu as défini ton tableau avec des tailles fixes, tu ne doit en aucun cas y faire une alloc!

Je ne fais pas d'allocation, j'initialise tout le tableau a 0. Les valeurs d'un tableau est 0 par defaut mais c'est pour plus tard definir a une autre valeur.
jeudi 20 mars 2008 à 14:52:32 | Re : Passage d'un tableau a 2 dim a une fonction

Pistol_Pete

Salut

Deathcrach>>memset ne fait en aucun cas une allocation mais juste une initialisation de la memoire a une certaine valeur.


A+
Mon site internet : [ Lien ]

jeudi 20 mars 2008 à 16:02:58 | Re : Passage d'un tableau a 2 dim a une fonction

DeAtHCrAsH

Autant pour moi, je lisais le memset comme étant un malloc.... Le week end se fait attendre !

Shell


Cette discussion est classée dans : int, dot, map, fow, dispmap


Répondre à ce message

Sujets en rapport avec ce message

Utilisation de std::map avec le type void * [ par toast3r ] Bonjour, J'utilise un tableau associatif, map et j'ai un problème au niveau de la récuperation des valeurs, voici le code que j'ai actuellement : # map [ par taieb84 ] salut j'ai une classe caisse class caisse{            float val;        int nbr;            public:            bool exist(float);    void ajouter(floa Lecture fichier impossible avec SDL [ par CCJ ] Hello.j'utilise SDL pour me faire un petit jeu 2D. Seulement je recontre actuellement un petit probleme. Il semblerait en effet qu'il bloque l'utilisa int to hexa Vc++ .dot net [ par devvisual ] Bonjour,Je cheche une fonction qui converti un int en hexa.La fonction hex de ne semble pas fonctionner elle n'est pas reconnu lors de la compile.Mer Problème classe [ par krokro6 ] Bonjour, voici mon problème: J'ai deux classe, une classe A et une classe B: class A { public : A(); virtual ~A(); int Pos Conversion de char en int ? [ par jnbrunet ] Salut,Je débute en c++... dans mon programme j'aimerai additionner les valeurs entrées en argument dans le main (argv). Le problème est que la variabl interface graphique GTK [ par ifitep84 ] bonjour à tous j'ai un ptit souci avec mon programme .en somme j'ai construit une interface graphique sous glade qui utilise GTK . Dans mon interfac probleme avec constructeur surchargé [ par dr971 ] Bonjour je programme un simulateur de course auto en c++ et j'ai un gro prob avec mes classes. en fait j'ai 2 classes : //classe voiture : #ifndef VOI Probleme de passage d'argument [ par dr971 ] Bonjour , j'ai un petit prob (plutot un gros)En fait j'ai une class A et une class BclassA{   public :        void setResistance(int);         //mutat


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales