[c] help me!!!

help me!!! [c] - Programmation

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);
}

Reply

Marsh Posté le 19-10-2001 à 21:01:10   

Reply

Marsh Posté le 20-10-2001 à 04:18:02    

if( (tab_leng=(int*)realloc(tab_leng, (j+1)*sizeof(int))) == NULL )
 
Tu voulais probablement ecrire  
 if( (tab_leng=(int*)realloc(tab_leng, (i+1)*sizeof(int))) == NULL )
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed