Condition et strcmp - C - Programmation
Marsh Posté le 30-08-2004 à 16:23:07
si(A==true et (b == true ou c == true)
t'as une drôle de façon de penser toi ...
sinon personne voit de problème nulle part : si l'adresse IP est "10.3.2.15" et si l'adresse MAC est "0:4:33:b7:41:52" ou bien "0:4:33:b7:41:53" alors arrêter
Marsh Posté le 30-08-2004 à 16:23:44
euh il faut plus de précision :
1/ qu'est-ce qui ne marche pas ? (syntaxe ou bug d'exécution)
2/ type de a, type de e1
Marsh Posté le 30-08-2004 à 16:49:49
Pour commencer trop de parenthèses, pas besoin d'alourdir la syntaxe.
Code :
|
Marsh Posté le 30-08-2004 à 16:57:12
+1 utilisez au maximum les règles de priorités ISO/ANSI C.
Marsh Posté le 30-08-2004 à 17:03:36
pains-aux-raisins a écrit : |
arf, comme quoi on peut etre programmeur et faire des erreurs de debutant quand on se trouve sur un nouveau langage (moi c plus java)...à moins que je ne sois pas bien reveillé
Citation : register u_int32_t a, register u_char *e1, |
et oui je voulais donc comparer une string avec des entiers...
dans le programme apparemment il y a un transtypage:
Citation : intoa(a) |
Sinon, pour expliquer mes besoins:
j'utilise arpwatch qui couple les MAC address à leur IP correspondantes et lorsqu'une MAC address n'a pas la mm IP que precedemment alors il envoie un mail... or mon problème c'est qu'il y a une machine avec deux MAC pour la même IP(ne me demandait pas pk je ne suis qu'étudiant pris en intérim' apres son stage avant de reprendre les cours)...si je laisse cela comme ca mon responsable peut recevoir plusieurs dizaines de mails par jour(voir des centaines) donc j'ai pensé à une condition qui dit pour tel IP et pour l'une de ses deux Mac ne pas envoyer d'email
Marsh Posté le 30-08-2004 à 17:10:53
Tu va voir Hurric, le C c'est merveilleux par rapport à Java
Marsh Posté le 30-08-2004 à 17:16:56
ok ben je te laisse le C je garde Java...mais pour le transtypage c bien comme ca : intoa(a)?
Marsh Posté le 30-08-2004 à 17:23:56
précision : itoa(...) n'est pas une fonction standard C. Vérifier qu'elle est bien dispo avec ton compilo.
exemple d'utilisation :
Code :
|
voilà
Marsh Posté le 30-08-2004 à 17:48:47
dans sa version simple (décimal positif) voici un code simplifié (désoptimisé) :
Code :
|
cette fonction pourra être appelée en déclarant un buffer (2e parametre) qui recevra la représentation caractere du nombre.
Code :
|
En espérant que je me suis pas gourré dans ce code...
Marsh Posté le 30-08-2004 à 18:28:44
génial c'est vachement sécure, et uis au moins, t'as pas l'impression de réinventer sprintf et le bien meilleurs snprintf
Code :
|
Marsh Posté le 30-08-2004 à 19:28:35
surtout qu'apparament il dit que son prog utilise déjà cette fonction... mais bon, question portabilité, on est d'accord, c'est zéro..
Marsh Posté le 31-08-2004 à 16:28:38
c'était pas itoa mais intoa... ce que c'est je sais pas je connasi pas le C...mais j'ai réussi à me débrouiller en utilisant un transtypage forcé...en tout cas ca marche ...merci pour vos réponses
Marsh Posté le 31-08-2004 à 16:47:13
dsl c de ma faute intoa est une classe du logiciel
Marsh Posté le 01-09-2004 à 17:12:45
bon ca marche bien mon responsable recoit bien les mails mais pas ceux de la machine qui pose probleme et il est ainsi tout content mais il s'est dit: "tiens !!! il faudrait que nous soyons deux à recevoir des mails...Comme ca si l'un d'entre nous n'est pas là ...l'autre pourra tjs surveiller..."
bon ben il a pas tort mon responsable...c'est important que cela soit toujours surveiller mais moi, j'ai bien essayé de modifier le programme mais il y a la commande execl qui apparemment ne veut pas etre placé deux fois à la suite...mon ami google m'a dit que cette fonction s'occupe des processus...mais je sais pas j'y arrive pas..programmer de base d'accord même si c'est en C mais programmer avec les processus non je peux vraiment pas... voila une partie du code : verriez vous une solution à mon probleme?
Citation : if ( strcmp("10.1.3.5",intoa(a))==0 && ( strcmp("0:5:12:b7:47:51",(char)e1)==0 || |
Marsh Posté le 01-09-2004 à 17:19:38
(char)e1
à ouais ça marche terrible
engager quelqu'un, de toutes évidences tu en as rien à foutre du C, tu cherche juste à ce que quelqu'un fasse ton travail. c'est hors charte
Marsh Posté le 01-09-2004 à 17:22:01
Taz a écrit : (char)e1 |
Du code pareil, j'ai mal au coeur.
Marsh Posté le 01-09-2004 à 17:40:08
Taz a écrit : (char)e1 |
non je ne cherche pas quelqu'un pour faire mon travail...je fais parti de quelque forums et je sais que les personnes du forums ne sont là que pour répondre si ils le souhaitent à des problèmes donnés...ce que je fait quand j'en ai le temps... Or là le temps c'est ce qui me manque car je suis seulement etudiant engagé en intérim' en tant qu'assistant informaticien pendant l'été et jusqu'à vendredi...
j'ai passé toute mon aprés midi dessus et si on compte avec hier... ce n'est pas en deux jours que je vais pouvoir apprendre le C...ce qui m'intéresserait tout de même mais pas possible maintenant...si j'ai mis du code c'était que vous ayez un visuel de la partie du logiciel que je suis en train de modifier (arpwatch soit dit en passant et aucune documentation à part le man n'est dispo sur le net) et pour me lancer sur quelques pistes..je sais que faire du transtypage de la sorte n'était pas le meilleur moyen mais manque de temps et de connaissances dans ce langage je n'ai pu faire mieux... VOilà donc si vous ne voulez pas m'aider (j'ai bien dit aider et pas faire car cela ne m'apporterait rien)...ben tant pis, j'ai d'autres problèmes en plus de celui là à résoudre mais j'aurais quand même aimer finir
Hurric'
Marsh Posté le 01-09-2004 à 17:46:06
débrouilles toi tout seul. ça n'a rien à voir avec la volonté. t'es hors charte. tu veux qu'on fasse le travail à ta place, tu t'en fiches bien de savoir ce qui ne va pas. lis la charte, et reviens quand tu l'auras assimilée
Marsh Posté le 01-09-2004 à 18:16:06
extrait charte:
Citation : [0C] On ne fait pas le boulot à votre place. |
Hurric' a écrit : non je ne cherche pas quelqu'un pour faire mon travail... |
donc je pensais avoir été clair sur ce que je voulais...mais bon, j'aurais été à votre place j'aurais dis à la personne oui les processus c'est dure/ pas dure à programmer... ou il faut imperativement que ton processus soit finis avant d'en faire una autre ou meme regarde sur ce lien http://forum.hardware.fr/forum2.ph [...] 910&cat=10 ou tel lien qui traite de ce sujet...oui je sais j'ai pas lu toute la charte donc je n'ai pas vu le referencement des liens de forum...je ne le connais pas trop, il est tres grand, beaucoup de monde et de topic ... donc je vais regarder les liens référencés... je vais rechercher dans google car les premieres explications que j'avais trouvées ne m'ont pas été d'un grand secours et donc y passer de longues heures(ou moins j'espère avec un peu de chance) ce que j'aurais fait, et que j'ai fait souvent tout cet été ce qui m'as permis d'apprendre beaucoup de <edit>choses(et pas chances), si il me restait pas aussi peu de temps, c'est pour cela que je souhaitais obtenir un aiguillage sur mes recherches...Donc je vais passer les 3 derniers jours qu'il me reste à chercher et tester et je viendrais vous donner ici le résultat de mes recherches (enfin si j'ai le temps!!!)
Hurric'
au fait j'ai quand meme voulut chercher sur le forum avant de poster mais cette fonction est inactive pour le moment
Marsh Posté le 02-09-2004 à 16:22:24
bonjour,
j'ai galéré tout ce matin en me renseignant sur la fonction execl...
(attention les yeux, il va y avoir du code)
Citation : execl(sendmail, "sendmail", "-odi", watcher, NULL); |
avec watcher pointeur sur une adresse e-mail.
Une idée saugrenue me germait dans la tête depuis hier soir: "et si au lieu d'executer deux fois sendmail...je lui envoyais deux adresses mails? ...non ca doit pas être possible..." mais ce matin après avoir testé différentes méthodes sans succès, j'ai essayé tout de même de remplacer watcher par deux adresses emails.
(attention les yeux, il va re y avoir du code)
Citation : execl(sendmail, "sendmail", "-odi", "adressemail1 adressemail2", NULL); |
et vous savez quoi? ca a marché!!!
Les deux adresses mails recoivent bien les mails envoyés par arpwatch...
Conclusion:
Que m'a apporté cette mini-aventure dans le monde fabuleux de C?
déjà , je me suis aperçu qu'il n'est pas si compliqué cela, en particulier, les pointeurs qui d'après ce que j'avais entendu dire etait l'horreur... je me suis rendu compte que c'est pas pasque je programme sur un autre langage que les causes d'erreur peuvent être lié à mon incompréhension de ce langage mais à une simple erreur d'algo...
Voilà, je remerci pains-aux-raisins pour son aide et Taz malgrè son acharnement à voir en moi un ...hum...branleur/profiteur/boulay....
Marsh Posté le 30-08-2004 à 16:18:22
bon, salut à tous!!!!
J'essaye de modifier un programme en C pour les besoins de mon responsable et comme je ne le maitrise pas et que ca marche pas, je vous soumet la partie que j'ai faite: en fait c'est une simple condition qui dit
si(A==true et (b == true ou c == true)
alors rien
if ( (strcmp("10.3.2.15",a)==0) && ( (strcmp("0:4:33:b7:41:52",e1)==0 ) ||
(strcmp("0:4:33:b7:41:53",e1)==0)) )
return;
merci à ceux qui prendront qques minutyes pour repondre