Allocation dynamique de tableu 2D

Signaler
Messages postés
2
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
11 janvier 2011
-
Messages postés
2
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
11 janvier 2011
-
Bonjour,
J'aimerais savoir comment en C je peux créer un tableau et au fur et à mesure de mes besoins, ajouter des lignes ?
Ici j'ai un tableau de x lignes et de 5 colonnes. Quand ma fonction test me renvoie 1 je veux sauvegarder tab[nouvelleligne][premièrecolonne] = i et tab[nouvelleligne][deuxièmecolonne] = j. (j'utiliserais les autres colonnes une fois mon problème compris).

int ** tab;
int point = 0;
int nbligne = 0;

 for(int i=0; i<rows; i++){
for( int j=0; j<cols; j++){
point = test(inputBIN,j,i,cols,rows);		
if(point==1){ // si point valide j'ajoute une ligne dans le tableau
    tab = (int **) malloc(sizeof(int*)*nbtrab);
    if (tab != NULL){   
for (int heu = 0; heu < nbligne; heu++){ 
    tab[heu] = NULL;
}
for ( int ligne=0 ; ligne < nbligne ; ligne++){ 
    tab[ligne] = (int *) malloc (sizeof (int)*5);
}
    if (tab[nbligne] != NULL){
tab[nbligne][0] = i;
tab[nbligne][1] = j;

    }
 
    }
  nbligne++;

    }
}
    }

    for (int ligne = 0 ; ligne < nblignes; ligne++){
free (tab[ligne]), tab[ligne] = NULL;
    }
free (tab), tab = NULL;


Merci de votre aide.

2 réponses

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

Il est impossible d'agrandir un tableau sans réallouer l'ensemble. Soit tu alloue le maximum et tu libère ce qui est en trop après traitement soit tu réalloue (pas malloc() mais realloc()) à chaque fois soit il faut utiliser les listes.

@++
Messages postés
2
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
11 janvier 2011

Ok, dommage mais merci pour l'info.