diff --git a/fly.c b/fly.c
new file mode 100644
index 0000000000000000000000000000000000000000..e96f62d9cc5d508a6a77948c4a84d294bb6c442b
--- /dev/null
+++ b/fly.c
@@ -0,0 +1,142 @@
+#include <stdio.h>
+
+struct airline
+{
+  char IATA_CODE_AIRLINE[2];
+  char AIRLINE[30];
+};
+
+struct airport
+{
+  char IATA_CODE_AIRPORT[3];
+  char NAME[80];
+  char CITY[30];
+  char STATE[3];
+  char COUNTRY[3];
+  float LATITUDE;
+  float LONGITUDE;
+};
+
+struct flight
+{
+  int MONTH;
+  int DAY;
+  int WEEKDAY;
+  char AIRLINE[2];
+  char ORGAIR[3];
+  char DEST_AIR[3];
+  int SCHDED_DEP;
+  int DEP_DELAY;
+  float AIR_TIME;
+  int DIST;
+  int SCHED_ARR;
+  float ARR_DELAY;
+  int DIVERTED;
+  int CANCELLED;
+};
+
+int q=1;
+FILE *fo1;
+FILE *fo2;
+FILE *fo3;
+
+
+fo1=fopen("airports.csv","rt");
+fo2=fopen("flights.csv","rt");
+fo3=fopen("airlines.csv","rt");
+
+if( (fo1 == NULL) || (fo2 == NULL) || (fo3 == NULL) )
+{
+  printf("Ouverture des fichiers impossible ! \n" );
+  exit(0);
+}
+
+struct chaine{
+
+  int cle;
+  struct cell *liste;
+};
+
+struct cell{
+
+  struct flight *info;
+  struct cell *suiv;
+
+};
+/*
+int ajout_tete(struct liste_chaine** l, struct flight *info){
+	struct liste_chaine* newcell;
+	newcell=malloc(sizeof(struct liste_chaine));
+	newcell->info=info;
+	newcell->suiv=(*l);
+	(*l)=newcell;
+
+}
+*/
+int construc_chaine(FILE *fp){
+  struct cell *new;
+  while (fscanf(fp,"%s")!=EOF){
+    if (fscanf(fp,"%s")=="\n")
+
+
+  }
+
+
+}
+
+
+
+/*
+Ici on va creer une nouvelle liste chainée avec un ajout_tete qui prednra en paramettre l'aeroport
+Pour faire la recherche on va se servir de la hastable de la compagnie en recherchant les aeroport dont elle est origine
+En ajoutant dans la liste seulement si l'aeroport ni est pas deja
+*/
+int show_airports(struct flight *AIRLINE)
+{
+// on crée la nouvelle liste chainée vide
+// Recup de la cle du paramettre
+//On cherche dans la hastable les ce que l'on a besoin
+// On renvoie cette info dans la liste chainée seulement si elle ni est pas encore
+//on return ou on print la nvl liste chainée
+
+}
+int main(){
+
+  return 0;
+}
+
+
+
+
+
+void split_arg(char * fullstring, char **arg)   //Cette fonction sépare tous les arguments séparés par un espace, valides ou non, de la requête et les stocke dans des chaînes de caractères.
+{
+  int i=0,a=0;
+  char separators[]="\n";
+  char temp1[N]="",temp2[N]="";
+  arg[0]=strtok(fullstring,separators);
+  while ( arg[i] != NULL )                      //Tant qu'il y a des arguments, c'est à dire tant qu'on ne rencontre pas un EOF.
+  {
+    i++;
+    //On stocke l'argument suivant.
+    arg[i] = strtok ( NULL, separators );
+  }
+
+  for (int k=i;k<14;k++)                         //On remplace les arguments vide par une chaîne de caractère "NULL" pour éviter les erreurs dans les manipulations de ces arguments par la suite.
+  {                                             //On ne va que jusque l'indice 13 car le nombre d'argument max que l'on puisse traiter est 14 donc on ne manipulera jamais les arguments suivants.
+  arg[k]="NULL";                                //Le tableau arg[N] lui est plus grand que 14 pour acceuillir tous les arguments (même s'il y en a trop) de la requête.
+  }
+
+  strcpy(temp1,arg[i-1]);
+  while ((int)temp1[a] != 10)
+  {
+    temp2[a]=temp1[a];                          //Pour le dernier argument de la requête on supprime le retour à la ligne pour éviter les erreurs dans les manipulations suivantes de cet argument.
+    a++;
+  }
+  strcpy(arg[i-1],temp2);
+
+  /*for (int j=0;j<14;j++)
+  {
+    printf("arg[%d] : %s \n",j,arg[j]);         //Affichage possible.
+  }*/
+}