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

Soyez le premier à donner votre avis sur cette source.

Vue 8 193 fois - Téléchargée 430 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
4 juin 2008 à 07:31
good job
cs_samana Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 12 septembre 2006
1 août 2006 à 21:47
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 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
14 juil. 2006 à 09:29
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 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
14 juil. 2006 à 00:24
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 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
13 juil. 2006 à 22:18
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.