[C] boucle infinie introuvable

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
Configuration: Windows Vista
Internet Explorer 7.0

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    montre nous le code
    0
  2. stroumpf Messages postés 292 Statut Membre 2
     
    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.
    0