A voir également:
- Lire un fichier , extraire des paire de mots
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
st p tu peux m'aider?
merci
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
#define TAILLEHASH 30700
#define BUFFSIZE 64
#define FNAME "c:\\out.txt"
typedef struct L
{ int freq;
char mot[50];
struct L *suivant;
} Liste;
char* get_word(FILE *fdesc, char *buff, size_t size)
{
char *ret=NULL;
char c;
if( fdesc!=NULL && buff!=NULL && size>0 )
{
int c;
int i=0;
c=fgetc(fdesc);
printf("%c",c);
getch();
while( ret==NULL && i<size && !feof(fdesc) )
{
c=fgetc(fdesc);
printf("%c",c);
getch();
if( isalpha(c) )
{
buff[i]=c;
i++;
}
else if( i>0 )
{ /* mot */
buff[i]='\0';
ret=buff;
}
}
}
return ret;
}
void insere_table(Liste **TableHash, char mot[50]);
unsigned int hash_cle(const char mot[50]);
int main(void)
{
FILE *fdesc=fopen(FNAME,"r");
Liste **TableHash;
char res[BUFFSIZE];
if( fdesc )
{
char *buff;
char *prec;
char vide[256];
if( get_word(fdesc,prec,BUFFSIZE) )
{
while( get_word(fdesc, buff, BUFFSIZE) )
{
printf("%s %s\n",prec,buff);
//insere_table(TableHash, prec);
strncpy( prec,buff,BUFFSIZE);
} }
fclose(fdesc);
}
return 0;
}
void insere_table(Liste **TableHash, char mot[50])
{
/* calcule le hash du mot */
unsigned int idx = hash_cle(mot);
/* recherche du mot */
Liste *p = TableHash[idx];
while(p != NULL)
{
if(strcmp(p->mot, mot) == 0)
{
/* le mot est trouve */
break;
}
p =p->suivant;
}
if(p == NULL)
{
/* le mot n'existe pas, insertion de celui ci */
p = (Liste *)malloc(sizeof(Liste));
if(p == NULL)
{
/* erreur d'allocation de memoire */
printf("Erreur d'allocation mémoire\n");
exit(0);
}
/* initialisation de la structure */
p->freq = 1;
strncpy(p->mot, mot, sizeof(p->mot));
/* mise a jour des liens, insertion en debut de liste */
p->suivant = TableHash[idx];
TableHash[idx] = p;
return;
}
/* le mot existe */
/* ajout des coordonnees */
}
unsigned int hash_cle(const char mot[500])
{
unsigned int val = 0;
for(; *mot != '\0'; ++mot)
{
val = *mot + 31 * val;
}
return val % TAILLEHASH;
}