[C] boucle infinie introuvable
Fermé
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
-
16 sept. 2008 à 09:04
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 16 sept. 2008 à 10:10
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 16 sept. 2008 à 10:10
A voir également:
- [C] boucle infinie introuvable
- Clé usb introuvable - Guide
- Facebook rencontre introuvable ✓ - Forum Facebook
- Dllregisterserver est introuvable - Forum Windows 10
- Msvcr110.dll est introuvable ✓ - Forum Windows 10
- Supprimer fichier introuvable - Guide
2 réponses
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
16 sept. 2008 à 09:50
16 sept. 2008 à 09:50
hello
montre nous le code
montre nous le code
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
16 sept. 2008 à 10:10
16 sept. 2008 à 10:10
merci dubcek
int main (void)
{
int res = 0;
FILE *F = NULL;
char mot[100];
int i, j;
unsigned int cle, pt;
SListe *seq2 = NULL;
SListe **seq;
Liste **TableHash;
TableHash = (Liste **) malloc (TAILLEHASH * sizeof (Liste *));
for (i = 0; i < TAILLEHASH; ++i)
TableHash[i] = NULL;
pt = hash_cle (".");
printf ("debut du programme \n----------------------------------\n");
F = fopen (PATH, "r");
printf ("Ouverture du Fichier \n----------------------------------\n");
while (fscanf (F, "%s", mot) == 1)
{
cle = hash_cle (mot);
if ((cle != pt) && (!ChercherMotDansTableHash (TableHash, mot)))
TableHash[cle] = InsertionEnTete (TableHash[cle], mot, cle);
if (fgetc (F) == EOF)
break;
}
fclose (F);
AfficherTableHash (TableHash);
printf ("nombre de lignes \n----------------------------------\n");
F = fopen (PATH, "r");
if (F != NULL)
{
char buffer[BUFSIZ];
int nb_read;
while ((nb_read = fread (buffer, 1, sizeof buffer, F)) > 0)
{
int i;
for (i = 0; i < nb_read; i++)
{
if (buffer[i] == '\n')
{
res++;
}
}
}
fclose (F);
printf ("%i\n", res);
}
else
{
perror (PATH);
}
F = fopen (PATH, "r");
PosLigne (F, TableHash);
.......}
le code est long.
mais le probleme c'est que je fais 2 lecture d'un fichier texte alors qu'il faut faire 1 seule lecture pour gagner le temps.
une 1ere lecture pour stocker les mots du fichier dans un table de hachage, et a chaque fois on lles attribue leurs liste de coordonnées (num-ligne , position),
alor(s que moi j'ouvre à chaque operation le fichier.
int main (void)
{
int res = 0;
FILE *F = NULL;
char mot[100];
int i, j;
unsigned int cle, pt;
SListe *seq2 = NULL;
SListe **seq;
Liste **TableHash;
TableHash = (Liste **) malloc (TAILLEHASH * sizeof (Liste *));
for (i = 0; i < TAILLEHASH; ++i)
TableHash[i] = NULL;
pt = hash_cle (".");
printf ("debut du programme \n----------------------------------\n");
F = fopen (PATH, "r");
printf ("Ouverture du Fichier \n----------------------------------\n");
while (fscanf (F, "%s", mot) == 1)
{
cle = hash_cle (mot);
if ((cle != pt) && (!ChercherMotDansTableHash (TableHash, mot)))
TableHash[cle] = InsertionEnTete (TableHash[cle], mot, cle);
if (fgetc (F) == EOF)
break;
}
fclose (F);
AfficherTableHash (TableHash);
printf ("nombre de lignes \n----------------------------------\n");
F = fopen (PATH, "r");
if (F != NULL)
{
char buffer[BUFSIZ];
int nb_read;
while ((nb_read = fread (buffer, 1, sizeof buffer, F)) > 0)
{
int i;
for (i = 0; i < nb_read; i++)
{
if (buffer[i] == '\n')
{
res++;
}
}
}
fclose (F);
printf ("%i\n", res);
}
else
{
perror (PATH);
}
F = fopen (PATH, "r");
PosLigne (F, TableHash);
.......}
le code est long.
mais le probleme c'est que je fais 2 lecture d'un fichier texte alors qu'il faut faire 1 seule lecture pour gagner le temps.
une 1ere lecture pour stocker les mots du fichier dans un table de hachage, et a chaque fois on lles attribue leurs liste de coordonnées (num-ligne , position),
alor(s que moi j'ouvre à chaque operation le fichier.