Bon alors voila, la fc qui suit doit permetre de rentrer un certain nombre de valeurs au clavier et les stocker en tant que char dans un tableau 2D or il y a un autre tableau contenant la longueur de chaque chaine. Ce dernier me pose beaucoup de pb et lorsque j'execute le prog cela plante sur l'instruction "tab_leng[i]=k;" au bout du troisieme tour de boucle Pourquoi?????
voici le prog :
char** saisir_donnees( char **tab, int *nbelt, int *tab_leng, int *tab_adr) { int i=0,j=0,ok=1,k=0,leng=0; char val[NBMAX]={0};
Marsh Posté le 19-10-2001 à 21:01:10
Bon alors voila, la fc qui suit doit permetre de rentrer un certain nombre de valeurs au clavier et les stocker en tant que char dans un tableau 2D or il y a un autre tableau contenant la longueur de chaque chaine. Ce dernier me pose beaucoup de pb et lorsque j'execute le prog cela plante sur l'instruction "tab_leng[i]=k;" au bout du troisieme tour de boucle
Pourquoi?????
voici le prog :
char** saisir_donnees( char **tab, int *nbelt, int *tab_leng, int *tab_adr)
{
int i=0,j=0,ok=1,k=0,leng=0;
char val[NBMAX]={0};
free(tab);
free(tab_leng);
tab_leng=NULL;
tab=NULL;
while(ok)
{
fflush(stdin);
printf("\nRentrer une valeur (taper f pour quitter) : \n" );
gets(val);
if( (val[0] == 'f' || (val[0] == 'F' )
ok=0;
else
{
j=0;
leng=strlen(val);
for(j=0;j<leng;j++)
{
if(val[j]<48 || val[j]>57)
{
if(val[j]!=45)
{
printf("ce n'est pas une valeur correcte!" );
break;
}
}
}
if( (tab = (char**)realloc(tab,(i+1)*sizeof(char*))) == NULL )
{
printf("Probleme d'allocation" );
break;
}
if( (tab[i] = (char*)malloc(leng*sizeof(char))) == NULL )
{
printf("Probleme d'allocation" );
break;
}
k=0;
for(k=0;k<leng;k++)
tab[i][k]=val[k];
if( (tab_leng=(int*)realloc(tab_leng, (j+1)*sizeof(int))) == NULL )
{
printf("probleme d'allocation" );
break;
}
tab_leng[i]=k;
i++;
}
}
*nbelt=i;
*tab_adr=(int)tab_leng;
return(tab);
}