#include <stdio.h>
#include <stdlib.h>

char * extraire (FILE * f, int pointeur, int longueur){
  fseek(f,pointeur-longueur,SEEK_SET);
  char * retour = (char *) malloc (sizeof(char)*(1+longueur));
  int i=0;
  char c = fgetc(f);
  for(; i < longueur ; i++){
      retour[i] = c;
      c=fgetc(f);
  }
  retour[i]='\0';
  return retour;
}

char * lireIndex (FILE * f, int citation, FILE * index){
  fseek(index,0,SEEK_SET);
  char k=fgetc(index);
  int cpt=0;
  while(cpt!=citation){
    if(k=='-')cpt++;
    k=fgetc(index);
  }
  cpt=0;
  char * pointeur = (char *)malloc(sizeof(char)*10);
  while(k!=','){
    pointeur[cpt]=k;
    cpt++;
    k=fgetc(index);
  }
  int p = atoi(pointeur);
  cpt=0;
  char longueur [10];
  k=fgetc(index);
  while(k!='-'){
    longueur[cpt]=k;
    cpt++;
    k=fgetc(index);
  }
  int l = atoi(longueur);
  return extraire(f,p,l);
}

void makefortune(char * file){
  FILE * f = fopen(file,"r");
  FILE * sortie = fopen("fortune.idx","r+w+");
  char c = fgetc(f);
  int pf = 0;//pointeur sur le fichier
  int ps = 0;//pointeur sur string
  int i = 0;//numero du string
  while(c != EOF){
    if(c == '%'){
      fprintf(sortie,"%d,%d-",pf,ps);
      i++;
      ps=-1;
    }
    pf++;
    ps++;
    c = fgetc(f);
  }
  fprintf(sortie,"\n");
}

int main(){
  int rand = ((int)random())%4;
  char * file = "fortune.text";
  makefortune(file);
  FILE * f = fopen(file,"r");
  FILE * sortie = fopen("fortune.idx","r+w+");
  printf("%s\n",lireIndex(f,rand,sortie));
  return 0;
}

