Commit 35b1737fb1c7a01184f442bad973340578469a16

Authored by acuadros
0 parents

projet1.0

Showing 1 changed file with 222 additions and 0 deletions   Show diff stats
main.c 0 → 100644
  1 +++ a/main.c
@@ -0,0 +1,222 @@ @@ -0,0 +1,222 @@
  1 +#include <stdio.h>
  2 +#include <stdlib.h>
  3 +#define NBC 20
  4 +#define NBO 40
  5 +#define NBF 10
  6 +#define LINE_MAX 1000
  7 +
  8 +
  9 +#include <string.h>
  10 +
  11 +
  12 +
  13 +typedef struct Oeuvres Oeuvres;
  14 +struct Oeuvres
  15 +{
  16 + char title[LINE_MAX];
  17 + char annee[LINE_MAX];
  18 + char commentaire[LINE_MAX];
  19 + Oeuvres *suivant;
  20 +
  21 +};
  22 +
  23 +
  24 +typedef Oeuvres *ptoeuvres, *liste_chaine;
  25 +
  26 +
  27 +typedef struct Realisateur Realisateur;
  28 +struct Realisateur
  29 +{
  30 + char nom[LINE_MAX];
  31 + char prenom[LINE_MAX];
  32 + ptoeuvres filmographe;
  33 + Realisateur *suivant;
  34 +};
  35 +
  36 +typedef Realisateur *ptrealisateur, *liste_realisateur;
  37 +
  38 +typedef struct
  39 +{
  40 + Realisateur realisateur;
  41 + ptrealisateur suivant;
  42 +
  43 +}REALISATEUR;
  44 +
  45 +
  46 +int readPartOfLine(int a,int b,char line[LINE_MAX],char part[LINE_MAX])
  47 +{
  48 +
  49 +
  50 + int debut = a;
  51 + int endAv = b;
  52 + int av = 0;
  53 + while(debut < endAv)
  54 + {
  55 +
  56 + part[av] = line[debut];
  57 + debut++;
  58 + av++;
  59 + }
  60 + part[av] = '\0';
  61 + return debut;
  62 +
  63 +}
  64 +void readElement(char element[LINE_MAX],ptoeuvres film)
  65 +{
  66 +
  67 +
  68 +
  69 +
  70 + int begin = 0;
  71 + if(element[0] == '\t')
  72 + begin = 2;
  73 + int Pbegin = strpbrk(element,"(") - element;
  74 + int Pend =strpbrk(element,")") - element;
  75 + int end = findEnd(element);
  76 +
  77 + readPartOfLine(begin,Pbegin,element,film->title);
  78 +
  79 + readPartOfLine(Pbegin+1,Pend,element,film->annee);
  80 +
  81 + readPartOfLine(Pend+1,end,element,film->commentaire);
  82 + printf("titre : %s , annee : %s , commentaire : %s \n",film->title,film->annee,film->commentaire);
  83 +
  84 +
  85 +}
  86 +int findEnd(char line[LINE_MAX])
  87 +{
  88 + int av = 0;
  89 + while(line[av] != '\n')
  90 + av++;
  91 + return av;
  92 +}
  93 +void initOeuvre(ptoeuvres oe)
  94 +{
  95 +
  96 +
  97 + int e;
  98 + for(e = 0;e<LINE_MAX;e++)
  99 + {
  100 + oe->annee[e] = malloc(sizeof(char));
  101 + oe->commentaire[e] = malloc(sizeof(char));
  102 + oe->title[e] = malloc(sizeof(char));
  103 + }
  104 + oe->suivant = malloc(sizeof(Oeuvres));
  105 +
  106 +
  107 +}
  108 +void readFile(FILE *file, ptrealisateur database)
  109 +{
  110 +
  111 +
  112 + char line[LINE_MAX];
  113 + int av = 0;
  114 +
  115 + int first = 0;
  116 +
  117 + int virgule = 0;
  118 + int tab = 0;
  119 + int end = 0;
  120 +
  121 + char element[LINE_MAX];
  122 +
  123 +
  124 +
  125 + ptrealisateur actualReal = database;
  126 + ptoeuvres actualOeuvre = NULL;
  127 +
  128 +
  129 + actualReal->filmographe = malloc(sizeof(Oeuvres));
  130 + actualOeuvre = actualReal->filmographe;
  131 +
  132 +
  133 +
  134 +
  135 +
  136 + char *ret;
  137 + while(av == 0)
  138 + {
  139 +
  140 + if(fgets(line,LINE_MAX,file) != NULL)
  141 + {
  142 +
  143 +
  144 + ret = strpbrk(line,",");
  145 + if(ret != NULL)
  146 + {
  147 +
  148 + if(first == 1)
  149 + {
  150 +
  151 + actualReal->suivant = malloc(sizeof(Realisateur));
  152 + actualReal = actualReal->suivant;
  153 + actualReal->filmographe = malloc(sizeof(Oeuvres));
  154 + actualOeuvre = actualReal->filmographe;
  155 + initOeuvre(actualOeuvre);
  156 + }
  157 +
  158 +
  159 + first = 1;
  160 +
  161 + virgule = ret - line;
  162 + tab = strpbrk(line,"\t") - line;
  163 + end = findEnd(line);
  164 + readPartOfLine(0,virgule,line,actualReal->nom);
  165 + readPartOfLine(virgule+1,tab,line,actualReal->prenom);
  166 +
  167 + printf("nom : %s prenom : %s \n",actualReal->nom,actualReal->prenom);
  168 +
  169 + readPartOfLine(tab+1,end,line,element);
  170 +
  171 + readElement(element,actualOeuvre);
  172 +
  173 +
  174 + actualOeuvre = actualOeuvre->suivant;
  175 +
  176 +
  177 +
  178 + }
  179 + else if(strcmp(line,"\n") != 0)
  180 + {
  181 +
  182 +
  183 +
  184 + initOeuvre(actualOeuvre);
  185 +
  186 +
  187 +
  188 + readElement(line,actualOeuvre);
  189 +
  190 + actualOeuvre = actualOeuvre->suivant;
  191 +
  192 +
  193 +
  194 + }
  195 +
  196 + }
  197 + else
  198 + av = 1;
  199 +
  200 +
  201 +
  202 + }
  203 +
  204 +}
  205 +
  206 +
  207 +int main()
  208 +{
  209 +
  210 +
  211 + Realisateur database;
  212 + ptrealisateur ptDataBase = &database;
  213 + database.filmographe = malloc(sizeof(Oeuvres));
  214 + initOeuvre(database.filmographe);
  215 + FILE* fichier = NULL;
  216 + fichier = fopen("very_small_example.list", "r+");
  217 +
  218 + readFile(fichier,ptDataBase);
  219 +
  220 +
  221 + return 0;
  222 +}