Lire un fichier , extraire des paire de mots
Fermé
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
-
18 sept. 2008 à 22:26
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 19 sept. 2008 à 10:15
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 19 sept. 2008 à 10:15
A voir également:
- Lire un fichier , extraire des paire de mots
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
19 sept. 2008 à 09:56
19 sept. 2008 à 09:56
Tu peux utiliser strtok et séparer sur les espaces. Après il faut voir comment tu gères les ponctuations.
Bonne chance
Bonne chance
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
19 sept. 2008 à 10:15
19 sept. 2008 à 10:15
Pour concaténer des mots tu as strcat.
19 sept. 2008 à 10:10
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;
}