Fonction / Tableau

zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018 - 24 juin 2008 à 10:56
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018 - 24 juin 2008 à 14:27
Bonjour a tous

J'ai des problème avec mes fonctions qui retourne ou prenne en paramètre un tableau.

Dans le code je récupère le tableau Buffer et ensuite je l'utilise dans
la fonction, pour ça il n'y a pas de problème ça fonctionne.

Mais je veux modifier mon tableau entre les deux et je n'y arrive pas.

Je voudrais modifier ou lire la valeur d'une case.


Normalement pour mon tableau qui est à deux dimensions je devrais faire :
Buffer[10][10] = 1;      par ex, mais ça ne marche pas

char*Buffer=malloc(NB_BLOCS_HAUTEUR*NB_BLOCS_LARGEUR*sizeof(char));
Buffer=chargerNiveau();
//c'est ici que je veux modifier mon tableau
afficherCarte(Buffer,ecran);

char*chargerNiveau()
{
FILE*fichierlvl=NULL;
fichierlvl=fopen("niveau.lvl","r");
charligneFichier[NB_BLOCS_HAUTEUR*NB_BLOCS_LARGEUR]={0};
fgets(ligneFichier,NB_BLOCS_HAUTEUR*NB_BLOCS_LARGEUR+1,fichierlvl);

charcartetab[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR]={0},i=0,j=0;

for(i=0;i<NB_BLOCS_HAUTEUR;i++)
{
for(j=0;j<NB_BLOCS_LARGEUR;j++)
{
switch(ligneFichier[(i*NB_BLOCS_LARGEUR)+j])
{
case'0':
cartetab[i][j]='0';
break;
case'1':
cartetab[i][j]=1;
break;
case'2':
cartetab[i][j]=2;
break;
case'3':
cartetab[i][j]=3;
break;
case'4':
cartetab[i][j]=4;
break;
case'5':
cartetab[i][j]=5;
break;
case'6':
cartetab[i][j]=6;
break;
}
}
}
fclose(fichierlvl);

char*Buffer=malloc((strlen(cartetab)+1)*sizeof(char));

if(Buffer!=NULL)
{
strcpy(Buffer,cartetab);
}
returnBuffer;
}

3 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
24 juin 2008 à 11:05
Salut

Je ne vois ici que des tableau a une dimension...

Pour acceder a la bonne case il suffit juste de faire le petit calcul suivant: Buffer[ i + j*NB_BLOC_LARGEUR ] = 1 ;

A+
Mon site internet : http://pistol.petesampras.free.fr
0
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018
24 juin 2008 à 11:28
Merci de ta réponse
regarde bien la fonction :
le tableau cartetab[][] est bien à deux dimensions
0
zlatan40 Messages postés 42 Date d'inscription dimanche 20 février 2011 Statut Membre Dernière intervention 1 avril 2018
24 juin 2008 à 14:27
je viens de remarquer en effet mon tableau Buffer n'a qu'une dimension quand je fait Buffer[10] = 1; ça marche.

Je trouve bizarre que ma deuxième fonction (afficherCarte) qui prend ce
tableau en paramètre fonctionne bien alors que je l'utilise comme un
tableau 2d
0
Rejoignez-nous