Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1915 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Petite erreur d'exeption

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petite erreur d'exeption

n°1305844
Cuty74
Posté le 15-02-2006 à 10:39:34  profilanswer
 

Bonjour à tous,
 
j'ai comme projet de fair eun logiciel de mise à jour dns en fonction d'un ping sur une ip.
J'en suis arrivé pour le moment au ping, j'arrive à le faire à exploiter les infos du ping mais je sais pas pourquoi, il m'a mis d'un coup une erreur d'exeption alors que 5min auparavant le même code marchais niquel.
Il me met le curseur sur la boucle while, donc si vous pouvez m'aider à trouver l'erreur sa serais génial.  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int ping ()
  5. {
  6.         int result = 0;
  7.    char commande[100];
  8.    strcpy (commande,"ping xxx.xxx.xxx.xxx" );
  9.    system(commande);
  10.    FILE * temp;
  11.    temp = fopen ("temp","r" );
  12.    char test[50];
  13.    while (!feof (temp))  // C'est ici qu'il me met une erreur
  14.    {
  15.          fscanf (temp,"%s",test);
  16.          if (strcmp (test,"octets=32" ) == 0)
  17.          {
  18.                            result = 1;
  19.          }
  20.    }
  21.    fclose(temp);
  22.    system("erase temp" );
  23.    return result;
  24. }
  25. void main (void)
  26. {
  27.    int result;
  28.    result = ping ();
  29.    printf ("\n 0 pour offline, 1 pour online : %d",result);
  30.    getchar();
  31. }


Voici l'erreur qu'il me met
http://perso.wanadoo.fr/cutycatz/erreur.JPG
 
 
Merci d'avance

mood
Publicité
Posté le 15-02-2006 à 10:39:34  profilanswer
 

n°1305845
chrisbk
-
Posté le 15-02-2006 à 10:40:52  profilanswer
 

bin je sais pas, ptet faudrait commencer par tester que fopen ne te renvoie pas NULL ?

n°1305849
chrisbk
-
Posté le 15-02-2006 à 10:42:15  profilanswer
 

Code :
  1. char commande[100];
  2.   strcpy (commande,"ping xxx.xxx.xxx.xxx" );
  3.   system(commande);


 
bah quitte a faire, hein

Code :
  1. system("ping xxx.xxx.xxx.xxx" );


 
c'est tout aussi ergonomique
 

n°1305854
Cuty74
Posté le 15-02-2006 à 10:45:20  profilanswer
 

Mais le code fonctionnais 5min avant, je sais pas ce qu'il c'est passer mais d'un coup y'a eu l'erreur :-/

n°1305858
chrisbk
-
Posté le 15-02-2006 à 10:47:12  profilanswer
 

je te la refait
 
il FAUT que tu testes si FOPEN te RENVOIE NULL
 
si pour une raison ou pour une autre fopen n'arrive pas a ouvrir "temp" (genre si le fichier n'existe plus, par exemple suite a un delete, un probleme de droit, blablabla... ) alors fopen te renverra NULL (normal t'essaye de lire un truc qui marche pas). Et toi dans la suite de ton code tu utilises une valeur NULL ce qui ne peut mener qu'a la ruine, le sang et la destruction.
 
Faut pas chouiner betement sur les temps passés ou tout était beau mais faut aller de l'avant mon ptit pere


Message édité par chrisbk le 15-02-2006 à 10:47:59
n°1305860
francky06l
Posté le 15-02-2006 à 10:49:14  profilanswer
 

Je vois pas comment le resultat du ping va rentrer dans ton fichier "temp"... a moins que tu ne fasses "ping xxx.xxx.xxx.xxx > temp", ou alors j'ai rien compris

n°1305862
chrisbk
-
Posté le 15-02-2006 à 10:50:05  profilanswer
 

(yé, et je connais pas la commande erase perso ?)

n°1305867
Cuty74
Posté le 15-02-2006 à 10:51:25  profilanswer
 

Le resultat du ping rentre dans le fichier ça j'en susi sur puisqu'il fonctionnait niquel chrome :)
 
Bon je teste l'ouverture du fichier :)

n°1305871
Cuty74
Posté le 15-02-2006 à 10:52:10  profilanswer
 

Heu sinon, au lieu de erase, y'a pas une commande pour vider le contenu du fichier ?
 
SA pourrai éviter le bug d'ouverture du fichier

n°1305874
chrisbk
-
Posté le 15-02-2006 à 10:54:22  profilanswer
 

Cuty74 a écrit :

Le resultat du ping rentre dans le fichier ça j'en susi sur puisqu'il fonctionnait niquel chrome :)


 
bin t'es bien le seul, parce que moi je suis sur que non

mood
Publicité
Posté le 15-02-2006 à 10:54:22  profilanswer
 

n°1305885
francky06l
Posté le 15-02-2006 à 11:01:22  profilanswer
 

En fait tu n'as pas besoin de tout ca, la commande system retourne un int .. Or quand une commande se passe biem elle retourne 0 , autre chose sinon donc avec ca, ca sufiit :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void main(int argc, char* argv[])
  4. {
  5.     char lbuff[128];
  6.     if(argc <2 )
  7.     {
  8.        printf("Syntax TPING <Ip>\n" );
  9.        exit(1);
  10.     }
  11.     sprintf(lbuff, "ping %s", argv[1]);
  12.     int rc = system(lbuff);
  13.     printf("Host ok = %d\n", !rc);
  14. }


n°1305887
Cuty74
Posté le 15-02-2006 à 11:03:08  profilanswer
 

Oki je vais tester ça je te remercie :)

n°1305898
Cuty74
Posté le 15-02-2006 à 11:09:13  profilanswer
 

Ah c'est niquel ça marche parfaitement jte remercie beaucoup ;)

n°1305909
Cuty74
Posté le 15-02-2006 à 11:19:27  profilanswer
 

Sinon une autre question, vous ne sauriez pas par hazare comment mettre à jour un no-ip ou un dyndns par envoie d'un mail ?

n°1305927
francky06l
Posté le 15-02-2006 à 11:28:28  profilanswer
 

Le mieux c'est de regarder sur le site et voir les differentes options. En general ils ont ftp et/ou mail

n°1305947
Cuty74
Posté le 15-02-2006 à 11:42:02  profilanswer
 

Ouép c'est ce que j'ai fais mais je ne trouve rien du tout pour ça. En plus je ne suis pas une bete en anglais donc ça n'aide pas non plus

n°1305959
francky06l
Posté le 15-02-2006 à 11:50:47  profilanswer
 

chez no-ip.org il y a l'option "Free Dynamic DNS update client", c'est un client qui tourne et met a jour no-ip avec l'adresse par exemple. J'ai pas vu le detail car j'ai pas souscrit .

n°1305962
francky06l
Posté le 15-02-2006 à 11:53:13  profilanswer
 

Cuty74 a écrit :

Ouép c'est ce que j'ai fais mais je ne trouve rien du tout pour ça. En plus je ne suis pas une bete en anglais donc ça n'aide pas non plus


 
2 secondes pour une recherche google et voila
http://lea-linux.org/cached/index/ [...] P.COM.html

n°1306059
Emmanuel D​elahaye
C is a sharp tool
Posté le 15-02-2006 à 13:14:17  profilanswer
 

Cuty74 a écrit :

au lieu de erase,


Pas standard. C'est delete().

Citation :

y'a pas une commande pour vider le contenu du fichier ?


cette fonction efface le fichier.
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1306061
Emmanuel D​elahaye
C is a sharp tool
Posté le 15-02-2006 à 13:15:51  profilanswer
 

Cuty74 a écrit :


Code :
  1. void main (void)




Non.
 
http://mapage.noos.fr/emdel/notes.htm#typemain


Message édité par Emmanuel Delahaye le 15-02-2006 à 13:24:07

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1306065
francky06l
Posté le 15-02-2006 à 13:20:23  profilanswer
 

Ok, c'est juste pour voir si ca suit :-) Ok pour le int main, mille exuses

n°1306489
Cuty74
Posté le 15-02-2006 à 16:28:23  profilanswer
 

Heu oué je sais pas pk ya une void la dedans ^^
 
Bon j'ai résulu pas mal de p'tis soucis grace à vous, mais là j'en ai un autre que je ne trouve pas.
 
Comment envoyer une requete html en c ?
Car j'ai trouver la syntaxe pour mettre à jour le dyndns d'ailleur la voici
 

Code :
  1. "http://"NomUser":"Pass"@members.dyndns.org/nic/update?system=dyndns&hostname="adresse dns"&myip="IP"&wildcard=OFF&mx=&backmx=NO&offline=NO"


 
mais je ne trouve pas dans les aides de builder la fonction que me permet de le faire donc si quelqu'un peux m'aider sa serai super :)

n°1306584
francky06l
Posté le 15-02-2006 à 17:46:14  profilanswer
 

Je connais pas Builder assez, la solution est peut etre dans l'utilisation des sockets ou and l'utilisation de libcurl, une library permettant de faire pas mal de chose de style Http / Https en C.
http://curl.haxx.se/

n°1306656
skelter
Posté le 15-02-2006 à 19:51:43  profilanswer
 

quand tu créé un fichier temporaire tu peux utiliser tmpnam pour générer un nom de fichier unique, ou alors utilises popen si ton envirronement le supporte

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Petite erreur d'exeption

 

Sujets relatifs
message d'erreur inconnupetite question conne (j'ai cherché ss succes la réponse) [RESOLU]
Erreur illegal start of expression[PHP] Activer tous les messages d'erreur ?
return string (erreur?)Petite question ajout d'objet pendant l'execution
Probléme php erreur[VBScript] [RESOLU] erreur lors de la suppression de fichier
message d'erreur : lien vers le serveur ne peut etre etabli... help! 
Plus de sujets relatifs à : Petite erreur d'exeption


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR