Bonsoir à tous
Je suis en première année d'école d'ingénieur, et je dois réaliser un programme qui teste une page html, et qui en tire les liens morts.
J'ai donc créé une première procédure qui teste un lien et qui dit s'il est bon ou pas :
Code :
- void lienbon(char **argv) {
- char commande[100];
- int coderetour=0;
- sprintf(commande, "wget -q %s", argv[1]);
- if(system(commande)==0) {
- printf("le lien est bon\n" );
- }
- else {
- printf("le lien est mort\n" );
- coderetour=1; }
- }
|
J'ai déjà super galéré pour faire ça...
Ensuite j'ai créé une procédure qui scanne une page HTML pour en retirer tous les liens écrits de façon propre :
Code :
- void testpage ( FILE *fH ) {
- Booleen encore = VRAI;
- char c;
- char *d;
- char chaine[100]="\0";
- while ( encore ) {
- c = fgetc ( fH );
- while ( c != EOF && c != '<' ) {
- c = fgetc ( fH );
- }
- switch (c) {
- case EOF : encore = FAUX;
- break;
- case '<' : if((c=fgetc(fH))=='a'){
- while(c!='"'){
- c=fgetc(fH);
- }
- c=fgetc(fH);
- while(c!='"'){ // boucle qui prend en compte le lien bien tapé
- c=*d; // pour convertir un char en char * ??? Ca m'a l'air foireux, mais pourtant ça fait fonctionner strcat
- strcat(chaine, d);
- c=fgetc(fH);
- }
- printf("%s\n", chaine); // affiche la chaine de caractère, pour vérifier qu'elle est bonne : ne fonctionne pas
- //lienbon(chaine); // pour le moment, seulement en commentaire, parce que même le printf précédent ne marche pas...
- printf("\n" ); // simplement pour améliorer la mise en page
- }
- else encore=VRAI;
- }
- }
- }
|
Alors voilà mon premier problème : j'arrive à compiler le programme, mais quand je l'exécute, il me sort une bouillie de caractère, approximativement de la longueur de chaque lien cependant...
Donc il y a un soucis au niveau de la chaîne de caractère créée...
Je me dis que cela doit venir du fait que la fonction fgetc renvoie un entier, alors que "c" est un caractère à la base...
Je pense que la clé du soucis se trouve dans le fait que je doive convertir un char (ou un int ??? je ne sais plus) en char*. Mais malgré mes recherches, je n'y arrive pas.
Et là j'ai passé des heures là-dessus, je n'en peux plus, je suis vraiment à bout. Une aide me ferait tellement du bien !
Message édité par bouldouman le 18-04-2008 à 02:42:50