[Langage C]Problème d'allocation

Salut,

ce bout de code représente l'allocation dynamique d'un tableau dont je ne connait pas la taille au départ.
Je souhaite augmenter la taille au gré des besoin

tab_ip est de type Adresse_ip*
Au départ, indice vaut 0 et k vaut 1.

Le problème est que ce que j'ai fait n'est pas correct car je n'obtiens rien de bon lors de mon affichage.

Est-ce que vous pourriez m'aider à modifier le code pour que cela fonctionne.

Merci

if (p != NULL)
		{
		  int ip[4];
		  sscanf(p, "%d.%d.%d.%d", ip, ip + 1, ip + 2, ip + 3);
		  
		  tab_ip[indice].a = ip[0];   
		  tab_ip[indice].b = ip[1];
		  tab_ip[indice].c = ip[2];
		  tab_ip[indice].d = ip[3];
		  
		  indice ++;
		  
		  if(indice == k)
		    {
		      Adresse_ip *tmp = (Adresse_ip *)malloc(2 * k * sizeof(Adresse_ip));
		      if (tmp == NULL){
			perror("erreur allocation");
			exit(1);
		      }
		      
		      for (j = 0; indice < k; j++)
			{
			  tmp[j] = tab_ip[j];
			}
		      free(tab_ip);
		      
		      tab_ip = tmp;
		      
		      for (j = k+1; indice < 2*k; indice++)
			{
			  tab_ip[j] = tmp[j];
			}
		      free(tab_ip);
		    }  
		}

1 réponse

  1. Contributeur
    for (j = 0; indice < k; j++)
    {
    tmp[j] = tab_ip[j];
    }
    Si tu as taper ça, je voi pas comment tu sort de la boucle ! (ou même si tu y rentre vue que indice==k)
    La deuxième boucle n'a pas ce problème, mais tu ne modifie pas 'j' !
    Sinon, je voi pas d'autres erreurs
    0