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