Sujet : Programme C
Je cherche un programme en C qui me permettrait d'extraire des données d'un fichier hmtl en le parcourant entièrement. Merci.
U.I.S. : Unité Informatique Standard. Règle de conversion : 5 minutes = 2 heures.
Non connecté Se connecter S'inscrire
Les forums de JeBulle.net » Delphi / Visual Basic / Langage C » Programme C
Pages 1
Vous devez vous connecter ou vous inscrire pour pouvoir répondre
Je cherche un programme en C qui me permettrait d'extraire des données d'un fichier hmtl en le parcourant entièrement. Merci.
Salut Vince56 et bienvenue parmi nous !
Est ce que tu pourrais préciser ce que tu veux exactement car là c'est assez vague? (je n'ai pas de programme dans ce style mais nous pouvons t'aider pour en faire un)
Merci de me souhaiter la bienvenue! J'ai un fichier HTML assez long et je voudrais que mon programme C me renvoie uniquement ce que je lui demande de me renvoyer.
exemple:
<head>
<title>d:\AMX\AIWA\AVDV75(RCVR).html (Vert)</title>
</head> <body bgcolor="#FFFFFF">
<p align="center"><br>
<font color="#0000FF" size="6"><b>VERT</b></font> <font size="4 7color="#800000">Pronto Color<b> <span style="background-color: FF0000"> </span><span style="background-color: #00FF00"> </span><span style="background-color: #0000FF"> </span></b></font><hr>
This file was made with VERT Ver 1.02 on 07/11/2003 18:28:29<br>
</font></b>
File Name: d:\AMX\AIWA\AVDV75(RCVR).html<br>
Manufacturer: AIWA<br>
Control: RC8AR01<br>
Device: AVDV75(RCVR)<br>
...
Je voudrais qu'il zappe tout le code jusqu'au </font></b>, et qu'il me renvoie tout ce qui suit, sauf le <br>.
Voila ce que je ferais pour remplir cette tache :
/////////////////////////////////////////////
DEBUT
Drapeau = 0
Ouverture du fichier source
Creation fichier destination
Creer les pointeurs sur fichiers source et destination
TANT QUE pas en fin de fichier source FAIRE avancer d'un caractère dans le fichier source
lecture du caractère courant
SI Drapeau = 0 ALORS // première etape : recherche de la chaine "</font><br>"
SI caractère courant = "<" ALORS
Comparer les 9 octets suivants "<" avec "/font><br>"
SI comparaison vraie ALORS
Drapeau = 1 // on commencera à copier aps la chaine voulue
Deplacement du pointeur aps "</font><br>
FIN SI
FIN SI
SINON // càd que drapeau = 1
SI caractère lu = "<" ALORS
Comparer les 3 caractères suivants à "<" avec "br>"
SI comparaison vraie alors
Deplacement de la position courante de lecture aps le "<br>"
FIN SI
SINON
Recopie du caractère lu dans le fichier destination
FIN SI
FIN SI
FIN TANT QUE
FIN
/////////////////////////////////////////////
Cet algorithme n'est surment pas correct et sans failles, mais je pense qu'il devrait t'apporter une base de départ pour faire ce que tu veux. Il faudra surement que tu rajoutes des conditions pour les cas particuliers que tu pourrais rencontrer. Je pense aussi qu'il doit y avoir moyen d'aller plus vite que ma méthode en utilisant des fonctions de recherche de chaine qui peuvent te positionner directement là ou se trouve la chaine. Mais aps ca va dépendre de la configuration de ton fichier html.
Je suis parti du postulat qu'il n'y avait qu'une seule chaine </font><br> dans ton fichier. S'il y en a d'autres, l'algorithme risque de ne plus etre valable.
Pour faire les comparaisons, il faut que tu utilises les fonctions de traitement de chaines et les pointeurs sur fichier.
Bon et bien c'est pas tout ca mais la pause déjeuner est finie !
@+++plux
Salut !
As-tu besoin des autres balises HTML ???
Si non, tu peux executer un script PHP (ou C) qui enlève toutes les balises HTML. Tu auras donc beaucoup moins d'informations à traiter.
Tout dépend aussi sur combien de fichiers tu veux appliquer cette méthode. Si ce n'est que pour 3 ou 4 fichiers maximum, je ne pense pas que le programme en C soit nécessaire.
moi je verrais plutot une comparaison ligne a ligne dans le cas ou tout tes fichiers sont formaté de la meme maniere et ou tu es certain que le </font></b> est seul sur sa ligne
tu gagnerais enormement en traitement par rapport au caractere par caractere
en gros ca donne un algorithme dans ce style la
flag=0
ouverture du fichier html
ouverture du fichier de recopie
tant que fichier html non fini
lire une ligne
si ligne = </font></b>
flag=1
si flag=1
recopie de ligne dans le fichier de recopie
fin tant que
si tu as besoin de precision sur les fonctions a utiliser , n'hesite pas a demander
Petite précision sur la solution de Rupert, il ne faut pas oublier de ne pas recopier les "<br>" de chaque fin de ligne.
Le principe reste bien sur le meme que dans ma solution...sauf si meilleure solution evidemment
Merci, les gars. Mais le problème, c'est que je suis débutant en C et je ne comprends pas toujours vos messages. Je précise que je suis en stage en entreprise, que c'est elle qui m'a demandé de réaliser ce programme et que je n'ai pas eu le choix du langage.
je viens d'apprendre que la fonction est déjà prête depuis une dizaine de jours. Ils m'ont laissé chercher un peu en fait. Merci quand même pour votre aide!!
Mais de rien Si tu as besoin n'hésites pas ! Et bon courage pour ton stage.
Je voudrais savoir une chose, c'est comment tu as trouvé le forum ? Google ? autre ?
Pages 1
Vous devez vous connecter ou vous inscrire pour pouvoir répondre
Les forums de JeBulle.net » Delphi / Visual Basic / Langage C » Programme C
Propulsé par PunBB, supporté par Informer Technologies, Inc.