potitmarron
Messages postés2Date d'inscriptionlundi 10 janvier 2011StatutMembreDernière intervention11 janvier 2011
-
10 janv. 2011 à 18:06
potitmarron
Messages postés2Date d'inscriptionlundi 10 janvier 2011StatutMembreDernière intervention11 janvier 2011
-
11 janv. 2011 à 15:59
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;
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 11 janv. 2011 à 01:42
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.