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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#define ATTAQUES 1
#define TECHNIQUES 2
#define MOUVEMENTS 3
typedef struct base
{
char* name;
char* filename;
} base;
typedef struct all_data
{
base** attaques;
base** techniques;
base** mouvements;
int nbattaques;
int nbtechniques;
int nbmouvements;
} all_data;
void Saisie(all_data *data, short choix);
void SousSaisie(base **data, int n);
int main()
{
all_data data;
short choix;
printf("1.Attaques\n2.Techniques\n3.Mouvements\n? ");
scanf("%hd",&choix);
while (choix < 1 || choix > 3)
{
printf("? ");
scanf("%hd",&choix);
}
Saisie(&data,choix);
//VideMemoire(...) //Fait les free() sur ce qui a été alloué
void Saisie(all_data *data, short choix)
{
switch(choix) //TODO: Saisie sécurisée
{
case ATTAQUES:
printf("Nombre d'attaques ? ");
scanf("%d",&data->nbattaques);
SousSaisie(data->attaques,data->nbattaques);
break;
case TECHNIQUES:
printf("Nombre de techniques ? ");
scanf("%d",&data->nbtechniques);
SousSaisie(data->techniques,data->nbtechniques);
break;
case MOUVEMENTS:
printf("Not Implemented\n");
break;
default:
printf("Program bug...\n");
}
}
void SousSaisie(base **data,int n)
{
char buffer[50];
int i=0;
data=(base**)malloc(n*sizeof(base*));
if (data==NULL)
fprintf(stderr,"Erreur d'allocation mémoire");
for(i=0; i < n; i++)
{
printf("Nom ? ");
fgets(buffer,sizeof(buffer),stdin); // Je m'occuperai du \n plus tard ;-)
data[i]->name=(char*)malloc((strlen(buffer)+1)*sizeof(char));
if (data[i]->name==NULL)
fprintf(stderr,"Erreur d'allocation mémoire");
//Je copierai le buffer une fois que l'allocation fonctionnera
//Idem pour data->chemin
}
} |
Partager