Blame view

projet.c 1.95 KB
2934aea8   mduquesn   -a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
  #include <stdbool.h>
  
  struct cell {
    int stop;
    struct cell * liste[26];
  };
  
  int num(char c){
    int x;
    x=c;
    if (x>96 && x<123){x=x-97;}
    if (x>64 && x<91) {x=x-65;}
    return x;
  }
  
  int ajout_mot(struct cell ** d,char * m){
    char c;
    struct cell **tmp1 , *tmp2 ;
    int x=0;
    if (*d==NULL){return EXIT_FAILURE;}
    tmp1=d;
    c=m[x];
    while (c != '\0'){
      //printf("%c",c);
      if ((*tmp1)->liste[num(c)]==NULL){
        tmp2=malloc(sizeof(struct cell));
        (*tmp1)->liste[num(c)]=tmp2;
      }
      tmp1=&((*tmp1)->liste[num(c)]);
      x++;
      c=m[x];
    }
    (*tmp1)->stop=1;
    //printf("\n");
    return 1;
  }
  
  void creation_dico(FILE *fd, struct cell **d){
    char s[20];
    while (fscanf(fd,"%s",s)==1){
      ajout_mot(d,s);
    }
  }
  
  int reconaissance(struct cell * d,char * m){
    char c;
    struct cell *tmp1;
    int x=0;
    tmp1=d;
    if (d==NULL){return 1;}
    c=m[x];
    while (c != '\0' && c != ' ' && c!= '.' && c != ':' && c != ',' && c != '?' && c != ';'){
      if (tmp1->liste[num(c)]==NULL){return 1;}
      tmp1=(tmp1->liste[num(c)]);
      x++;
      c=m[x];    
    }
    if (tmp1->stop==1) {return 0;}
    return 1;
  }
  
  int lecture(FILE *fd, struct cell *d){
    char s[20];
    int cmpt=0;
    int x;
    while (fscanf(fd,"%s",s)==1){
      x=reconaissance(d,s);
      cmpt+=x;
      if(x==1){printf("%s \n",s);}
    }
    return cmpt;
  }
  
  
  
  int main(int argc, char *argv[])
  {
  	if (argc < 3)
  	{
  		fprintf(stderr, "usage: hash <file_name>\n");
  		return EXIT_FAILURE;
  	}
  
  	FILE *fp;
  	printf("%s\n",argv[1]);
  	fp=fopen(argv[1], "r");
  	if (fp==NULL)
  	{
  		fprintf(stderr, "no such file, or unreachable: %s\n", argv[1]);
  		return EXIT_FAILURE;
  	}
  	
  	FILE *fd;
  	printf("%s\n",argv[2]);
  	fd=fopen(argv[2], "r");
  	if (fd==NULL)
  	{
  		fprintf(stderr, "no such file, or unreachable: %s\n", argv[2]);
  		return EXIT_FAILURE;
  	}
  
  	
  	struct cell *d;
  	d=malloc(sizeof(struct cell));
  	creation_dico(fp,&d);
  	int inc;
  	inc=lecture(fd,d);
  	printf("%d mots non reconnus", inc);
  }