[c/linux] balisage html de fichiers source c/c++

Soyez le premier à donner votre avis sur cette source.

Vue 7 786 fois - Téléchargée 385 fois

Description

Salut à tous :)

Cette application console prend en argument un nom de fichier,
le balise avec du code HTML,
Et crée un nouveau fichier portant le même nom, mais avec l' extension .htm.
Sur le screenshot vous voyez à gauche le résultat dans Firefox; à droite sa source HTML.

Projet hyper-intéressant je conseille à tous de se pencher sur ce type d' algorithme.
150 lignes de codes, en 40 heures.

Traite un fichier de 100Ko en 15ms (à 7000Ko/ms).

Source / Exemple :


Dans le zip:

  • le fichier source: CversHTML.c
  • un petit "hello world" pour tester: test.c
  • un script shell pour compiler à la volée et baliser CversHTML.c
  • et un batch windows

Conclusion :


Signalez les bugs, merci d'avance.

Si quelqu'un connait l' équivalent de GetTickCount() sous linux ça serait pas de refus!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

aminesoft1
Messages postés
9
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
16 juin 2008

good job
cs_samana
Messages postés
8
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
12 septembre 2006

Concrètement, sans rentrer ds les détails techniques du code (manip de chaîne de caractères, portabilité windows<->unix ...) c'est une sorte de parseur (comme pour les fichiers XML avec stylsheet XSL en gros).
Joli travail. Je le mets de côté au cas où...ça peut être utile.
cs_vicenzo
Messages postés
179
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
25 août 2010

Effectivement free() s'en moque... Mais le sprintf NON !! et va foutre le bordel à l'addresse pointée par ficout.... Et le free générer eventuellement une erreur car sprintf aura ecrit plus d'octets que prévu ou insérer des valeurs tordues et donc le free() sous certaines implémentations (dont VC) aura parfois du mal à libérer la mémoire car celle ci n'est plus valide...
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
free() se moque de savoir ce qu'il y a à l'adresse spécifiée, le désallocateur system libère le bloc partant de l'adresse donnée à free et basta, aucun besoin que soit une chaine avec zero final ou autre.
cs_vicenzo
Messages postés
179
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
25 août 2010

Quelques petites remarques ... :

* BOOL n'est pas un type de donnée ni une classe d'allocation mais juste une macro... Est il donc nécessaire de l'inclure dans le tableau MotType ?

* Fonction main : l'appel direct à argv[1] sans avoir tester le argc est franco ! En effet, 99% des implémentations usuelles placeront, si aucun paramètre n'est fourni, un pointeur null dans argv[1]. Mais ce comportement n'est pas prévu et défini par la norme et sous un quelconque compilo C venu de mars, cela peut planter l'appli...

* dans la fonction BaliserFichier() :
..
ficout= (char*) malloc(strlen(fichier)+4);
sprintf(ficout, "%s.htm", fichier);
..
AIE ! lors du free(ficout), sous VC++ crash en debug ! Pourquoi ? car le buffer ficout ne contient pas de zéro terminal. Il faut faire :
malloc(strlen(fichier)+4 + 1)......

* dans la fonction Envoi() :
..
memset(mot,0,200); -> vaut mieux : memset(mot,0,sizeof(mot));
..

* pareil pour les taille de MotsCles (17) et MotsTypes (19) : ces valeurs sont utilisées à plusieurs endroits... Un define ou un static const serait moins source d'erreurs lors d'enrichissement ultérieurs de la source.

Ce sont des petits détails ... mais bon ca peut toujours servir !
Sinon j'aurai bien vu un tableau de structure avec comme champs le caractère, le code couleur, le code fonction à appeller afin de minimiser la liste des else if de la boucle principale....

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.