Samus Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 Bonjour à tous J'ai un problème pour faire un prgrame en c dont le sujet est le suivant : supprimer dans une page html ous les couples de balises inutiles du type <font></font> le probleme est que je suis un newbie en C et je ne vois pas du tout comment faire... Il me faudrait déjà savoir les balises inutiles, et je n'en connais pas... ensuite je ne sais pas comment aller lire et ecrir un fichier externe, ou rechercher cette chaine de caracteres dans le fichier... je suis perdu, je compte vraiment sur votre aide pour m'aider à trouver des pistes. Merci d'avance ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 Salut, Je te conseille ces 2 sites : http://www.developpez.com/ http://www.cppfrance.com/ Ils sont plutôt bien faits avec plein d'exemples et de tutoriaux. Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 une balise inutile, c'est une balise qui est directement refermée comme ton <font></font>, tu pourrais avoir <body></body> etc... Si tu les supprime ca ne change pas la page. Tu vas devoir bosser a fond sur tout ce qui est extraction/comparaison de chaines je crois. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 29 mai 2005 Auteur Partager Posté(e) le 29 mai 2005 je connais developpez et cpp france mais j'ai rien trouve qui corresponde à ce que je cherche... et je ne sais absolument pas comment faire une extraction de string ou une comparaison... je nage completement pour le faire. on m'a parle de fopen, fwrite, et de la methode stdio.h... Ca peut m'etre utile? Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 Oui bien sûr cela va te servir. fopen = ouverture d'un fichier fclose = fermeture d'un fichier fread = lecture d'un fichier fprintf = écriture dans un fichier et vas voir string.h, il y a des fonctions de comparaison de chaines de caracteres comme strcmp ( je crois que c'est ça, à vérifier !). Tu trouveras les détails de toutes ces fonctions ici, mais également sur plein d'autres sites : http://www.infini-fr.com/Sciences/Informat.../Api/index.html Je t'ai trouvé ça aussi, cela pourra t'aider : http://www.programmationworld.com/site/Cou...o=109#_topic_12 Bon courage. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 29 mai 2005 Auteur Partager Posté(e) le 29 mai 2005 Merci beaucoup pour ton aide misszaza, je vais regarder ca. Un gros bisou pour tes encouragements Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 De rien Pour une fois que l'on parle de langage C sur ce forum, c'est pas souvent ! Si tu as des problèmes avec ton code n'hésites pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 29 mai 2005 Auteur Partager Posté(e) le 29 mai 2005 bah en fait je suis un newbie en c mais il faut absolument que je finisse ca au plus vite, mais je sais pas du tout comment my prendre... je connais a peine les bases du langage alors un sujet comme ca je ne sais pas comment faire... T'aurais une idee du programme en lui meme? Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 A 1ere vue, moi je ferais un truc du genre : 1- ouverture du fichier en entrée (fopen) 2- ouverture du fichier de sortie (fopen) 3- lecture des caracteres (fgetc) 4- si tu trouves un <, tu fais rien jusqu'à trouver un > 5- tout le reste tu recopies dans le fichier de sortie (fputc) 6- une fois arrivé à la fin du fichier, tu les fermes (feof et fclose) En supposant que ce que tu dois supprimer de ton fichier est toujours entre <>, je crois que c'est le point commun des balises html. Voilà j'espère que cela pourra t'aider. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 30 mai 2005 Auteur Partager Posté(e) le 30 mai 2005 Decidement je galere, je ne sais pas du tout comment transcrire ca en programme... Si il y en a qui peuvent m'aider ca serait sympa, malgre l'aide de miss zaza je ne sais pas quoi faire Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Tu as deja fait de la programmation ? bon sinon comme l'a dit misszaza, tu ouvres ton fichier, tu lis chaque caractère, quand tu rencontre une balise,tu stock son nom ( body, table,...) si juste après son > tu as un < suivi directement après par un / lui même suivi du même nom tu n'écris pas, si tu as autre chose tu continues à lire/écrire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 30 mai 2005 Auteur Partager Posté(e) le 30 mai 2005 oui j'ai deja fait de la programmation mais je debute en c... et je connaias pas les methodes a employer, il est vrai aussi que je ne suis pas tres doue... jessaie d'ecrire le programme depuis hier soir, mais ya rien a faire je ne sais pas quoi mettre... Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Bon allez je te donne un exemple de code (on t'avait quand même bien orienté déjà ) : #include <stdio.h> int main() { // Déclarations FILE * pFileIn; FILE * pFileOut; char c; // Ouverture des fichiers pFileIn = fopen ("myfile.txt","r"); pFileOut = fopen ("myfileensortie.txt","w+t"); if (pFileIn == NULL) perror ("Error opening file"); else { do { c = fgetc (pFileIn); // Lecture du fichier d'entrée if (c == '<') { do { // Tout ce qui est entre <> n'est pas écrit c = fgetc (pFileIn); } while (c != '>'); } else fputc(c, pFileOut); // Ecriture dans le fichier de sortie } while (c != EOF); // Fermeture des fichiers fclose (pFileIn); fclose (pFileOut); } return 0; } Ce programme va enlever tout ce qui trouve entre <>. A + Lien vers le commentaire Partager sur d’autres sites More sharing options...
astero-H Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 un lien utile : http://www.cplusplus.com/ref/indexr.html ça réference les principales procédures et fonctions du C (stdio.h, stdlib.h, string.h, time.h, math.h) et du C++ (cstdio, cstdlib, cstring, ctime, cmath) euhh... et à mon avis tu devrais plutot commencer par des progs style "hello world !!" avant d'essayer de faire quelque chose de "compliqué". Patience... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 30 mai 2005 Auteur Partager Posté(e) le 30 mai 2005 MErci enormement miss je vais m'en servir comme base !! c'est normal que je n'y arrive pas, je connais pas la moitié de ce qui est marqué Merci beaucoup je vais essayer de me debrouiller Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 tu as programmé en quoi avant ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 30 mai 2005 Auteur Partager Posté(e) le 30 mai 2005 j'ai fait du java avant, mais c'etait peut etre pas le bon langage pour commencer, et puis je n'ai jamais ete super doue en prog. Le programme de misszaza, par contre, je le compile, mais par contre a l'execution, ca ne marche pas. A la compilation tout marche, mais apres... J'ai vraiement trop de mal Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Tu as bien remplacé le fichier en entrée "myfile.txt" (pFileIn = fopen ("myfile.txt","r") par un fichier qui existe dans ton répertoire car autrement cela ne va pas marcher. Pour essayer tu crées un fichier texte bidon (myfile.txt) avec des balises et du texte et tu le mets dans le même répertoire que ton prog. Tu compiles, tu exécutes et normalement dans le répertoire de ton prog, tu te retrouves avec un fichier myfileensortie.txt qui est une recopie de l'autre sans les balises. Allez faut pas désespérer... Lien vers le commentaire Partager sur d’autres sites More sharing options...
m00t Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Juste un point, ce n'est pas vraiment tout ce qui est entre "<>" qu'il ne faut pas écrire, mais uniquement les balises qui sont refermées juste apres l'ouverture : <></> Donc il y a un peu plus de subtilité que ça à rajouter dans la bonne base de MissZaza Lien vers le commentaire Partager sur d’autres sites More sharing options...
Samus Posté(e) le 30 mai 2005 Auteur Partager Posté(e) le 30 mai 2005 Bon bah j'ai fait ce que j'ai pu en aussi peu de temps, en reprenant la base de miss zaza (un gros merci pour ton temps miss ), mais bon j'ai pas réussi à tout faire le programme est incomplet. M'enfin tant pis pour moi Merci à tous pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Exact m00t, j'avais lu un peu vite l'énoncé du problème !! Oui il fallait modifier quelques trucs mais apparemment c'est trop tard Il fallait dire que c'était aussi urgent, on t'aurait aidé plus vite. Tant pis. Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Juste pour dire que au niveau syntaxe des boucles, conditions et les declarations ( enfin presque ) le Java c'est exactement le même que le C, tu devrais pas trop avoir de mal à passer de l'un à l'autre, maintenant au niveau manipulation des chaines de caractères avec le C tu dois casiment toujours passer par des fonctions de la libraire string.h . Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ashley Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 Bonsoir, je viens moi aussi réclamer en tant que débutant complètement perdu et dépassé un peu d'aide en vue de la réalisation d'un programme en C. Mon sujet est le suivant: Rechercher un mot dans une page html (hors balise) et le mettre en évidence (gras,rouge, ?) On m'a fourni un code malheureusement incomplet : #include <stdio.h> #include <stdlib.h> int main() { //ouverture de fichier en lecture FILE *file = fopen("pagehtml.txt","r"); char buffer[1000]; if (file == NULL) { fprintf(stderr,"Erreur dans l'ouverture du fichier"); exit(-1); } sprintf(buffer, "%s","pagehtml.txt"); //fermeture du fichier fclose(file); //lecture à parti du buffer //Demander le mot à rechercher char tmp[30]; char *mot; do { printf( "Rechercher :" ); gets( tmp ); } while ( (sscanf(tmp, "%s",mot)!=1)); sprintf(tmp, "%s", mot); puts(tmp); //recherche du mot tapé dans le buffer //utiliser while avec getchar et strcmp pour la comparaison avec mot //system("PAUSE"); return 0; } Si quelqu'un peut m'aider à le compléter.Je vous remercie d'avance. :8 Lien vers le commentaire Partager sur d’autres sites More sharing options...
MissZaza Posté(e) le 30 mai 2005 Partager Posté(e) le 30 mai 2005 T'es un copain de Samus ? He les mecs, il faudrait peut-être faire vos devoirs tout seul On veut bien donné un coup de main, mais faut pas abuser... Le prog que tu donnes est correct mais si tu débutes en C, celui-ci est plus simple à comprendre ( ne t'embêtes avec des buffers si tu n'en n'as pas l'utilité ): #include <iostream>#include <stdio.h> int main() { // Déclarations char mot[256]; char tmp[256]; int r; int taille; //Ouverture des fichiers en lecture et écriture FILE *file = fopen("myfile.html","rt"); FILE *fileOut = fopen("myfileOut.html","wt"); if (file==NULL) perror ("Error opening file"); else { printf("Mot a rechercher :"); // Demande du mot à rechercher gets (mot); // Récupération du mot taille = strlen(mot); // taille+1 = nombre de lettres de mot // Boucle sur le fichier do { fgets (tmp , taille+1 , file); // Lecture de (taille+1) caracteres r = strcmp(tmp,mot); // Comparaison avec le mot a trouver if (r!=0) fputs (tmp, fileOut); // Le mot n'est pas le bon, on l'ecrit normalement else { // Le mot est le bon, il faut l'ecrire dans le fichier en gras fputs ("<B>", fileOut); fputs (tmp, fileOut); fputs ("</B>", fileOut); } } while (!feof(file)); } return 0; } Autrement, tu peux très bien adapter le code que tu as en reprenant la boucle sur le buffer et non sur le fichier. Tu lis les carctères du buffer et tu compares avec ton mot à trouver. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ashley Posté(e) le 31 mai 2005 Partager Posté(e) le 31 mai 2005 Merci beaucoup pour ton code qui est beaucoup plus clair . Seulement y a encore un petit problème , le compilateur ne le compile pas et m'indique :"iostream: No such file or directory.". Le programme que je dois réaliser est en c, j'ai donc compiler en C et apperemment la biblio iostream est en c++ non? En tout cas quand je l'ai enlevé(la biblio), il a compilé.Je lance le programme, je demande un mot à rechercher ds myfile.html (que j'ai mis dans le meme repertoire que le prog) mais ça fait rien, pourtant un fichier myfileOut.html est bien créé.Quand j'ouvre ce dernier je trouve le même texte que dans myfile.html. La biblio iostream est elle indispensable? Si oui, comment je fais pour qu'il l'accepte? Ps: Oui je suis bien un ami de Samus lol, on aimerait bien faire notre devoir tout seul mais on y arrive pas, on a pas fait tout ça en cours et cela fait plusieurs mois qu'on pas eu de cours d'algo. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.