Tableau dynamique bidimensionnel en C

Amine_s11 Messages postés 2 Date d'inscription dimanche 19 juin 2005 Statut Membre Dernière intervention 15 janvier 2006 - 15 janv. 2006 à 18:01
gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010 - 16 janv. 2006 à 09:54
Bonjour à tt

je souhaite creer un tableau dynamique de 2 dimensions dont la hauteur
est connue (2) alors j'ai fait:

typedef int *ptr_int;
typedef ptr_int *ptr_p_int;

ptr_p_int mat;
ptr_int ligne1;
ptr_int ligne2;




mat=malloc(2*sizeof(ptr_int));

// je suppose qu'au depart la largeur==1
ligne1=malloc(1*sizeof(int));
ligne2=malloc(1*sizeof(int));

*(mat)=ligne1;
*(mat+1)=ligne2;
//je souhaite modifier la taille de ligne1 et ligne2 chaque fois que l'utilisateur veut saisir d'autres valeurs:

int n=0;

while(c!=2)
{
printf(" entrer val1");
scanf("%d",&mat[0][n]);

printf(" entrer val2");
scanf("%d",&mat[1][n]);
n++;

printf("Ajouter d'autres valeurs ? 1:Oui 2:Non");
scanf("%d",&c);

if (c==1)
{
// si oui :je demande plus d'espace memoire pour l'utilisateur
ligne1=malloc(n+1*sizeof(int));
ligne2=malloc(n+1*sizeof(int));
}

} //fin de while

apres la saisie, et quand j'essaie de lire le contenu de mat je ne trouve pas les valeurs que j'ai introduit.

pouvez vous m'aider d'augmenter la taille de ligne1 et ligne2 sans rencontrer ce type d'erreurs

merci d'avance

1 réponse

gagah1 Messages postés 509 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 3 août 2010
16 janv. 2006 à 09:54
Utilise realloc() au lieu de malloc()

while(c!=2)
{
...
printf("Ajouter d'autres valeurs ? 1:Oui 2:Non");
scanf("%d",&c);

if (c==1)
{
// si oui :je demande plus d'espace memoire pour l'utilisateur
ligne1=realloc(ligne1, n+1*sizeof(int));
ligne2=realloc(ligne2, n+1*sizeof(int));
}

} //fin de while
0
Rejoignez-nous