This commit is contained in:
2026-02-13 16:12:39 +01:00
parent 40e2167003
commit b646f5ca78
16 changed files with 984 additions and 33 deletions
@@ -0,0 +1,60 @@
#include "animals.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct insect *insect_init(const char *species, size_t size, int can_fly, int can_swim){
if(species == NULL) return NULL;
struct insect *insect = malloc(sizeof(struct insect));
if (insect == NULL) return NULL;
int index = 0;
while (*(species + index) != '\0') index ++;
insect->species = malloc((index + 1)*sizeof(char*));
if (insect->species == NULL) {
free(insect);
return NULL;
}
strcpy(insect->species, species);
insect->size = size;
insect->can_fly = can_fly;
insect->can_swim = can_swim;
return insect;
}
struct animal *animal_from_insect(const char *color, struct insect *insect){
if (color == NULL || insect == NULL) return NULL;
struct animal *animal = malloc(sizeof(struct animal));
if(animal == NULL) return NULL;
int index = 0;
while(*(color + index) != '\0') index ++;
animal->color = malloc((index + 1) * sizeof(char*));
if(animal->color == NULL){
free(animal);
return NULL;
}
strcpy(animal->color, color);
animal->type = 0;
animal->animal.insect = insect;
return animal;
}
void free_insect(struct insect *insect){
if (insect == NULL) return;
//Normalement il ne devrait pas etre NULL
//if(insect->species != NULL) free(insect->species);
free(insect->species);
free(insect);
}