Fonction qui teste un lien html

Fonction qui teste un lien html - C - Programmation

Marsh Posté le 17-04-2008 à 01:31:47    

Bonjour à tous !  
 
Je voudrais créer une fonction qui teste un lien HTML (noté stream ici) en utilisant le code retour de wget. Je pense être proche du but, mais là je bloque sur un problème stupide de pointeurs...
 
Voilà la fonction :
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void lienbon (FILE *stream, int *code) {
  4.   char s;
  5.   while((s = getc(stream)) != EOF)
  6.     putchar(s);
  7.   code = system("wget -d s" );
  8. }


 
 
Le message d'erreur renvoyé est :  
 
$ gcc -Wall program.c -o programl
program.c: In function ‘lienbon’:
program.c:8: attention : assignment makes pointer from integer without a cast
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld a retourné 1 code d'état d'exécution
 
 
J'ai tout essayé, je suis passé par fgets... Mais rien n'y fait, ça me rend fou !
 
Quelqu'un aurait une idée ? Merci !!  :jap:  

Reply

Marsh Posté le 17-04-2008 à 01:31:47   

Reply

Marsh Posté le 17-04-2008 à 02:09:30    

Allez au hasard ... c'est un exercice de cours ? Tu n'as jamais vraiment programmé en C ?
 
L'erreur de compilation signifie que tu as oublié la fonction main() dans ton programme.
A propos du code de retour de system, tu auras une très bonne aide en tapant :
man system
(ou man -S3 system)

Reply

Marsh Posté le 17-04-2008 à 02:14:31    

Ok merci je vais chercher, mais en attendant je viens de simplifier un peu la chose, avec :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main (int argc, char **argv) {
  4.   int code;
  5.   printf("%s\n", argv[1]);
  6.   code=system("wget -q argv[1]" );
  7.   printf("%d\n", code);
  8.   return EXIT_SUCCESS;
  9. }


 
 
En fait, ça devrait marcher, mais la fonction system comprend que je lui écris "argv[1]" au lieu du lien correspondant à cette chaine de caractères ! Quelqu'un sait comment remédier à ce problème qui m'a l'air tellement simple ??
 
 
PS : oui c'est bien un exo de cours ! Je suis en prrmière année d'école d'ingé, et je galère un peu là...
 
Merci !


Message édité par bouldouman le 17-04-2008 à 02:29:55
Reply

Marsh Posté le 17-04-2008 à 02:39:03    

documente toi sur sprintf()

Reply

Marsh Posté le 17-04-2008 à 02:43:05    

oui, j'ai déjà commencé à m'y atteler, mais là mon attention se porte sur la  fonction de mon dernier post, qui me paraît vraiment être proche du but ! Il s'agit juste de faire reconnaitre à System la vraie valeur de argv[1] et non juste ce mot !

 

En gros je voudrais savoir comment passer une variable en argument de la fonction system...

 

Merci beaucoup


Message édité par bouldouman le 17-04-2008 à 02:52:01
Reply

Marsh Posté le 17-04-2008 à 03:00:02    

J'ai réussiiiiiiiiiiiiiiiii !!!
 
ENFIN !!!!!!!!!!!!!
 
Mon dieu quel bonheur... Vous ne pouvez pas imaginer !
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main (int argc, char **argv) {
  4.   char commande[100];
  5.   int code;
  6.   sprintf(commande, "wget -q %s", argv[1]);
  7.   code=system(commande);
  8.   printf("%d\n", code);
  9.   return EXIT_SUCCESS;
  10. }


 
 
Mais en fait il faut maintenant que je transforme cette fonction en procédure...  :sweat:  
 
Quelqu'un aurait une idée ?
 
 :jap:


Message édité par bouldouman le 17-04-2008 à 03:22:44
Reply

Marsh Posté le 17-04-2008 à 03:28:54    

Tu sais ce qu'est une procédure ? Si oui, base toi sur ton premier post ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed