parsage [c] - Programmation
Marsh Posté le 09-12-2001 à 12:11:15
otb82 a écrit a écrit : 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' ![]() ![]() { fread(&i, sizeof(char), 1, entree); if ((i == 'r' ![]() ![]() { fread(&i, sizeof(char), 1, entree); if ((i == 'e' ![]() ![]() { fread(&i, sizeof(char), 1, entree); if ((i == 'f' ![]() ![]() { while (!feof(entree)) // gerer les ' ' avant le = { fread(&i, sizeof(char), 1, entree); if (i != ' ' ![]() } // while if (i == '=' ![]() { while (!feof(entree))// gerer les ' ' apres le = { fread(&i, sizeof(char), 1, entree); if (i != ' ' ![]() } // while if (i == '\"' ![]() { fread(&i, sizeof(char), 1, entree); // pour ne pas avancer une case de trop } while ((!feof(entree)) && (sortie == 0)) { if ((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); } |
Marsh Posté le 09-12-2001 à 00:25:17
le but de cet algo est d'ajouter dans une liste chaine tous les liens contenu dans un fichier .htm
|| (i == 'H'
)
|| (i == 'R'
)
|| (i == 'E'
)
|| (i == 'F'
)
break;
break;
|| (i == ' '
|| (i == '>'
)
====
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'
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'r'
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'e'
{
fread(&i, sizeof(char), 1, entree);
if ((i == 'f'
{
while (!feof(entree)) // gerer les ' ' avant le =
{
fread(&i, sizeof(char), 1, entree);
if (i != ' '
} // while
if (i == '='
{
while (!feof(entree))// gerer les ' ' apres le =
{
fread(&i, sizeof(char), 1, entree);
if (i != ' '
} // while
if (i == '\"'
{
fread(&i, sizeof(char), 1, entree);
// pour ne pas avancer une case de trop
}
while ((!feof(entree)) && (sortie == 0))
{
if ((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);
}