[C] boucle infinie introuvable
stroumpf
Messages postés
292
Statut
Membre
-
stroumpf Messages postés 292 Statut Membre -
stroumpf Messages postés 292 Statut Membre -
Bonjour,
j'ai fait une fonction que je lai testé sur un fichier texte petit et ca merche bien , mais quand je l'ai testé sur 1 fichier de 26000 lignes , l'execution ca resté plusqu'une heure !!! :(
on m'a dit qu'il ya une boucle infinie, or moi j'ai passé une journée la cherché, mais rien trouvé.
qui veut m'aider?
merci
j'ai fait une fonction que je lai testé sur un fichier texte petit et ca merche bien , mais quand je l'ai testé sur 1 fichier de 26000 lignes , l'execution ca resté plusqu'une heure !!! :(
on m'a dit qu'il ya une boucle infinie, or moi j'ai passé une journée la cherché, mais rien trouvé.
qui veut m'aider?
merci
A voir également:
- [C] boucle infinie introuvable
- Clé usb introuvable - Guide
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xinput1_3.dll introuvable ✓ - Forum Jeux PC
- Supprimer un fichier introuvable - Guide
- Messenger message non lu introuvable ✓ - Forum Facebook Messenger
2 réponses
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.