dico.c 1.53 KB
#include "dico.h"

void make_empty_dico(dico d){
  for(int i=0;i<NBCHAR;i++)
    d[i]=NULL;
}
void delete_dico(dico d){
  for(int i=0;i<NB1CHAR;i++)
    delete_tree(d[i]);
}



bool addto_dico(dico d,const string s){
  byte endKind=end_kind(s);
  if(!is_word(endKind)){
    printf("incorrect word");
    return true;
  }
  if(is_empty(d[hash(s[0])])){
     d[hash(s[0])]=make_node(s[0],0);
     addto_tree2(d[hash(s[0])],s+1,endKind);
     return false;
  }
  else {
    return addto_tree(d[hash(s[0])],s+1,endKind);
  }
}

void loadfrom_keyboard(dico d){loadfrom_file(d,stdin);} 
void loadfrom_file(dico d,FILE*stream){
  if(stream==NULL){
    printf("sorry, we can't open the file");
    return;
  }
  char word[30]={0};
  while(fscanf(stream,"%s",word)!=EOF)
    addto_dico(d,word);
  printf("load success");
}

void printto_terminal(dico d){printto_file(dico,stdout);} 
void printto_file(dico d,FILE*stream){
  if(stream==NULL){
    printf("sorry, we can't open the file");
    return;
  }
  if(d==NULL){
    printf("sorry, we can't open the dictionary");
    return;
  }
  for(int i=0;i<NBCHAR;i++){
    print(d[i],stream,"");
  }
}

void print(tree t,FILE*stream,string prefix){
  //needs to check stream!=NULL
  if(is_empty(t))
    return;
  if(is_end(t)){
    if(is_acronyme_end(t)){
      if(is_straight_end(t)){}
      else{}
    }
    if(is_proper_end(t)){
      if(is_straight_end(t)){}
      else{}
    }
    if(is_common_end(t)){
      if(is_straight_end(t)){}
      else{}
    }
  }
  for(int i=0;i<NBCHAR;i++){
    print(t->next[i],stream);
  }
}