Fonction / Tableau

Signaler
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
-
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
-
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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018

Merci de ta réponse
regarde bien la fonction :
le tableau cartetab[][] est bien à deux dimensions
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018

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