Aller au contenu

Urgent : besoin d'aide pour un programme en C


Samus

Messages recommandés

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 ! :francais:

Lien vers le commentaire
Partager sur d’autres sites

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

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

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

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

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

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

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... :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Bon allez je te donne un exemple de code (on t'avait quand même bien orienté déjà :keskidit: ) :

#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 + :mdr:

Lien vers le commentaire
Partager sur d’autres sites

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... :chinois:

Lien vers le commentaire
Partager sur d’autres sites

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... :D

J'ai vraiement trop de mal :mdr:

Lien vers le commentaire
Partager sur d’autres sites

Tu as bien remplacé le fichier en entrée "myfile.txt" (pFileIn = fopen ("myfile.txt","r"):mdr: 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

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 :D

Lien vers le commentaire
Partager sur d’autres sites

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 :incline: ), mais bon j'ai pas réussi à tout faire le programme est incomplet. M'enfin tant pis pour moi :incline:

Merci à tous pour votre aide :chinois:

Lien vers le commentaire
Partager sur d’autres sites

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

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

T'es un copain de Samus ? He les mecs, il faudrait peut-être faire vos devoirs tout seul :transpi:

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.

:zarb:

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup pour ton code qui est beaucoup plus clair :zarb: . Seulement y a encore un petit problème :mad2: , le compilateur ne le compile pas et m'indique :"iostream: No such file or directory.". :transpi: 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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...