Probleme de pointeur

Signaler
Messages postés
34
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
19 août 2007
-
Messages postés
34
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
19 août 2007
-
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

Messages postés
5
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
12 juin 2005

là en fait tu a déclaré un pointeur de fonction. pour retourner un tableau tu n'a pas besoin de pointeur
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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;

}
Messages postés
34
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
19 août 2007

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 !!!!
Messages postés
34
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
19 août 2007

Cela n'empche qu'a l'execution sa bug :'(
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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;

}
Messages postés
34
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
19 août 2007

merci beaucoup!!!!