Lire un fichier , extraire des paire de mots
Bonjour,
je suis debutante et je sais pas commment faire pour lire un fichier texte (gros de taille de 2go) en faisant l'"extraction des paire de mots voisins.
par exemple : bonjour les amis
les liste mots :
bonjour les
les amis.
merci
je programme en C
je suis debutante et je sais pas commment faire pour lire un fichier texte (gros de taille de 2go) en faisant l'"extraction des paire de mots voisins.
par exemple : bonjour les amis
les liste mots :
bonjour les
les amis.
merci
je programme en C
Configuration: Windows Vista Internet Explorer 7.0
A voir également:
- Lire un fichier , extraire des paire de mots
- Lire un fichier epub - Guide
- Lire fichier bin - Guide
- Comment lire un fichier docx - Guide
- Lire fichier dat - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
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;
}