Probleme de pointeur

jypees Messages postés 34 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 19 août 2007 - 12 juin 2005 à 18:59
jypees Messages postés 34 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 19 août 2007 - 12 juin 2005 à 21:39
Bonjour a tous.

Voila j'ai l'habitude de faire de la prog sur unix et la je viens de me
lancer sur windows (lol) et j'ai un petit probleme car je ne sais pas
comment faire cela, voici le code :



#include <stdio.h>

#include <stdlib.h>



char **lol(char **tab)

{

char saisi[1024];

int i;

int j;



scanf("%s", &saisi);

j = atoi(saisi);

for (i = 5; i >= 0; i--)

{

if (tab[i][j] == 'a')

{

tab[i][j] = 'X';

return(tab);

}

}

}



int main(int argc, char *argv[])

{

int i;

int j;

char tab[6][7];



while (1)

{

for (i = 0; i < 6; i++)

{

for (j = 0; j < 7; j++)

tab[i][j] = 'a';

}

tab = lol(tab);

system("PAUSE");

}

return 0;

}

J'aimerais envoye mon tab a la fonction lol, le modifier et le
renvoyer. Et sa me met "passing arg 1 of `lol' from incompatible
pointer type" quelqu'un a une idée de la betise que j'ai faite? Merci
beaucoup pour votre soutiens ^^

6 réponses

toddis Messages postés 5 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 12 juin 2005
12 juin 2005 à 19:27
là en fait tu a déclaré un pointeur de fonction. pour retourner un tableau tu n'a pas besoin de pointeur
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juin 2005 à 19:47
A part system("pause"), ton programme n'a rien de spécifique a Windows, je vois pas quoi tu parles.

toddis> rien a voir avec un pointeur de fonction, renseigne toi un peu



tab=lol... ne peut pas marcher: tu ne peux pas affecter un tableau (ca pointe vers une zone mémoire, ca ne change pas).

Comme tu passes le tableau, celui ci sera de toutes facons modifiée,
lol peut donc être void. Enfin, pour le passage de paramètre, il suffit
de caster en (char**)



#include <stdio.h>

#include <stdlib.h>



char **lol(char **tab)

{

char saisi[1024];

int i;

int j;



scanf("%s", &saisi);

j = atoi(saisi);

for (i = 5; i >= 0; i--)

{

if (tab[i][j] == 'a')

{

tab[i][j] = 'X';

return(tab);

}

}

}



int __cdecl main(int argc, char *argv[])

{

int i;

int j;

char tab[6][7];



while (1)

{

for (i = 0; i < 6; i++)

{

for (j = 0; j < 7; j++)

tab[i][j] = 'a';

}

lol((char**)tab);

system("PAUSE");

}

return 0;

}
0
jypees Messages postés 34 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 19 août 2007
12 juin 2005 à 20:13
ce que je voulais dire c'est qu'a la base je ne faisait que des char **
(double malloc) donc je procedait comme cela. Donc la j'ai un peu
bloqué! Mais cela marche je vous remercie beaucoup !!!!
0
jypees Messages postés 34 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 19 août 2007
12 juin 2005 à 20:15
Cela n'empche qu'a l'execution sa bug :'(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juin 2005 à 21:00
Tu as autant interet a faire comme ca:



#include <stdio.h>

#include <stdlib.h>



void lol(char tab[6][7])

{

char saisi[1024];

int i;

int j;



scanf("%s", &saisi);

j = atoi(saisi);

for (i = 5; i >= 0; i--)

{

if (tab[i][j] == 'a')

{

tab[i][j] = 'X';

}

}

}



int __cdecl main(int argc, char *argv[])

{

int i;

int j;

char tab[6][7];



while (1)

{

for (i = 0; i < 6; i++)

{

for (j = 0; j < 7; j++)

tab[i][j] = 'a';

}

lol(tab);

system("PAUSE");

}

return 0;

}
0
jypees Messages postés 34 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 19 août 2007
12 juin 2005 à 21:39
merci beaucoup!!!!
0
Rejoignez-nous