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

  FORUM HardWare.fr
  Programmation

  A l'aide, problème de prog réseaux en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

A l'aide, problème de prog réseaux en C

n°11032
binary_man
Posté le 24-01-2001 à 14:27:12  profilanswer
 

Salut à tous, j'ai un petit pb en prog réseaux.
En effet, dans le but de m'initier à la prog réseaux, j'ecris un petit prog permettant l'envoi de E-Mail "anonyme".
Mon problème est le suivant: Je me connecte au serveur et reçois le code 220 m'indiquant qu'il est prêt, ensuite je lui envoie HELO ESMTP et la, il reste de glace (c.à.d qu'il renvoie toujours le code 220).
Je pense que la commande envoyé n'est pas prise en compte, j'ai pourtant essayé pour valider d'envoyer "
", "<CRLF>" mais cela n'y fait rien, qqu'un pourrait m'aider ??
Autre problème, que je vais illustrer par un bout de source:
 
...
char HELO[4] = "HELO";
printf("On affiche HELO %c", HELO);
...
 
Ce code affiche "On affiche HELO" suivi d'un caractere relativant etrange: que ce passe t-il ??
Merci d'avance à tous.
Si vous pouviez me repondre à l'adresse suivante, cela serait fors sympathique : binary_man@caramail.com

mood
Publicité
Posté le 24-01-2001 à 14:27:12  profilanswer
 

n°11033
gilou2
Posté le 24-01-2001 à 14:31:31  profilanswer
 

HELO est un tableau de char.
Quand tu l'utilise dans printf, il est vu comme un pointeur sur char (char *).
Donc au lieu d'empiler un char (1 octets), tu empile un pointeur (4 octets). Le printf affiche le charactere mis dans l'octet de poids faible du pointeur HELO.
 
Si tu veux afficher HELO, fais comme ceci :
printf("On affiche HELO %c%c%c%c", HELO[0], HELO[1], HELO[2], HELO[3]);

 

n°11075
la viper
Posté le 24-01-2001 à 18:52:55  profilanswer
 

printf("On affiche HELO %s", HELO);
devrait fonctionner ..
 
attention le caractere d'echappement doit etre dans HELO

 

n°11077
fred777888​999
Posté le 24-01-2001 à 18:55:43  profilanswer
 

Le caractère d'echapement y sera automatiquement, si on reserve assez de place en mémoire... La déclaration correcte est :
char HELO[5] = "HELO";
qui reserve 5 octets et commence à l'indice zéro pour finir à l'indice 4 par le fameux 0 de fin de chaîne.

 

n°11078
zezette
&#034;Allez hop, au revoir&#034;
Posté le 24-01-2001 à 18:57:28  profilanswer
 

moi j'aurais mis %s plutot que %c ...

 

n°11278
phlb
Posté le 25-01-2001 à 18:00:29  profilanswer
 

il manque le nul terminal string '' c'est une chaine de 5 octets qu'il faut déclarerss
 
HELO[0]='H'
HELO[1]='E'
HELO[2]='L'
HELO[3]='O'
HELO[4]=''=>0x00 en hexass
 
Le printf va lire la mémoire jusqu'a ce qu'il trouve 0x00, tu as de la chance de pas avoir un exception.


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

  A l'aide, problème de prog réseaux en C

 

Sujets relatifs
il me faudrait un prog de calculatrice hexadécimale en assembleur svpgros probleme
Petit probléme avec l'AWT de java .Problème de javascript
Problème avec DataFieldGros pb Interbase : a l'aide !!!
Aide pour installation linux php, mysql, apache.[DelphiX] Problème d'initialisation DirectX [\DelphiX]
Problème sur une popupconnection à un serveur mail à l'aide de commande perl
Plus de sujets relatifs à : A l'aide, problème de prog réseaux en C


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