1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
//je zappe les test d'allocations ,etc...
typedef struct TableauSansLimite TableauSansLimite;
struct TableauSansLimite
{
int* tab;
int nbCase;
};
void init_TableauSansLimite(TableauSansLimite* tsl)//initialise proprement
{
tsl->tab=NULL;
tsl->nbCase=0;
}
void free_TableauSansLimite(TableauSansLimite* tsl)//vide proprement
{
free(tsl->tab);
init_TableauSansLimite(tsl);
}
void needRealloc_TableauSansLimite(TableauSansLimite* tsl,int newSize)//ré-alloue si nécessaire
{
if(newSize>=tsl->nbCase)
{
tsl->tab=realloc (tsl->tab,newSize*sizeof(int));
tsl->nbCase=newSize;
}
}
int getCase_TableauSansLimite(TableauSansLimite* tsl,int indice)
{
needRealloc_TableauSansLimite(tsl,indice+1);
return tsl->tab[indice];
}
void setCase_TableauSansLimite(TableauSansLimite* tsl,int indice,int valeur)
{
needRealloc_TableauSansLimite(tsl,indice+1);
tsl->tab[indice]=valeur;
}
//utilisation
TableauSansLimite tab;
init_TableauSansLimite(&tab);
setCase_TableauSansLimite(&tsl,42,123);
printf("%d\n",getCase_TableauSansLimite(&tsl,42));//affichera 123 |
Partager