le but de cet algo est d'ajouter dans une liste chaine tous les liens contenu dans un fichier .htm
====
l'algo est port certes si svous trouver mmieux aidez moi
====
l'algo affiche bien les lien mais ajoute seulement le dernier rencontrer ... pourtant la fonction ajouter_fin marche bien qd on fais a la main :
liste = inserer_fin(liste,"lien1.htm",1);
liste = inserer_fin(liste,"lien2.html",1);
aff_liste(liste);
===
bon voila l'aglo concerne ... ca doit etre tt con mais je trouve pas l'erreur:
===
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "liste.c"
pelement *parsage(char *lien, pelement *liste)
{
int i = 0, j = 0, sortie = 0;
FILE *entree;
char *lelien = NULL;
lelien = malloc(100*sizeof(char));
entree = fopen(lien, "r" );
if (entree != NULL)
{
do
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'h'
|| (i == 'H'
)
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'r'
|| (i == 'R'
)
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'e'
|| (i == 'E'
)
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'f'
|| (i == 'F'
)
{
while (!feof(entree)) // gerer les ' ' avant le =
{
fread(&i, sizeof(char), 1, entree);
if (i != ' '
break;
} // while
if (i == '='
{
while (!feof(entree))// gerer les ' ' apres le =
{
fread(&i, sizeof(char), 1, entree);
if (i != ' '
break;
} // while
if (i == '\"'
{
fread(&i, sizeof(char), 1, entree);
// pour ne pas avancer une case de trop
}
while ((!feof(entree)) && (sortie == 0))
{
if ((i == '\"'
|| (i == ' '
|| (i == '>'
)
{
lelien[j] = '\0';
//lelien[j+1] = '\0';
j = 0;
sortie = 1;
}
if (sortie == 0)
{
lelien[j++] = i;
}
fread(&i, sizeof(char), 1, entree);
} // while
sortie = 0;
printf("%s\n",lelien);
liste = inserer_fin(liste,lelien,1);
} // '='
} // 'f'
} // 'e'
} // 'r'
} // 'h'
}
while(!feof(entree));
fclose(entree);
return(liste);
} //
else
{
printf("\n impossible d ouvrir le fichier\n\n" );
return(liste);
}
} // parsage
int main(int argc, char **argv)
{
pelement *liste = NULL;
liste = parsage("index.htm", liste);
//liste = inserer_fin(liste,"lien1.htm",1);
//liste = inserer_fin(liste,"lien2.html",1);
aff_liste(liste);
//free_liste(liste);
return(0);
}