Tableau de structure, dynamique ??

mattflyer Messages postés 63 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 29 novembre 2005 - 28 avril 2005 à 11:31
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 28 avril 2005 à 23:21
Bonjour à tous..
Petite question, je souhaiterai pouvoir déclarer une structure, par exemple;
struct recap
{
int nb1;
char a;
};
Puis créer un tableau de structure
struct recap tab[4];
Jusqu'à là tout va bien, mais comment faire, si au cours du programme, nous avons besoin d'une case de plus ?
Comment faire pour "agrandir" ce tableau qui contient une structure?
Merci bcp pour votre aide
Matthieu

Programmation: Que c'est simple de faire compliquer !!

5 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 avril 2005 à 11:51
Tu ne peux pas modifier ton tableau.

Si tu as beaucoup de modification de taille comme cela, il ne faut pas
que tu utilises un tableau mais des listes chainées. Par exemple, list
(#include <list>) en C++. Si les modifications ne sont
qu'occasionnels. Utilise un vector (#include <vector>). Renseigne
toi sur ces deux conteneurs.
0
mattflyer Messages postés 63 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 29 novembre 2005
28 avril 2005 à 14:18
heu oui ms en fait, je code en C, et pas en C++...
et heu ce ne serait pas la fonction realloc () ?
matthieu

Programmation: Que c'est simple de faire compliquer !!
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 avril 2005 à 15:08
Je connais pas bien ces fonctions j'utilise pas. Quel idée de faire du C :)



Oui regarde malloc et realloc, malloc t'allouera la mémoire et realloc
la redimensionnera. Mais bon, je pense qu'une liste chainée est mieux
si tu dois souvent modifier la taille.
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
28 avril 2005 à 23:18
c'est koi ces remarque a la noix luthor il a droit de faire du C kan meme !

Bon pour ta structure c'est simple :
tu doit alluouer dynamiquement la memoire ca d:

par exple pour ta structure recap tu commence par creer un pointeur sur ta structure comme ceci:
struct recap*precap;
ce pointeur va servir a pointer vers une adresse memoire la ou tu stocke toutes le tableau de structure:
Pour creer un tableau de struct de 4 elements tu fait :

precap= (struct recap*)malloc( 4* sizeof(struct recap));

le 4 peut tres bien etre remplacé par une var de type int

pour augmenter ou diminuer la taille de ce tableau de struct tu fais :

precap =(struct recap*)realloc( nouvelle_taille * sizeof(struct recap));

nouvelle_taille peut tres bien etre + petit ou +grand que 4 il indique juste la noulelle taille de l'emplacement d'adresse precap

ensuite pour utiliser precap tu fais par exple :

precap[2].nb1=5;

voila !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
28 avril 2005 à 23:21
oulala j'ai failli oublier le plus important!!

Pour desallouer la memoire il faut faire : free(precap);

c important kan meme si ce tableau pese plusieurs Mo dans la ram!
0
Rejoignez-nous