[Langage C]Problème d'allocation

Fermé
Brimal - 18 mai 2006 à 22:39
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 mai 2006 à 08:54
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);
		    }  
		}
A voir également:

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
19 mai 2006 à 08:54
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