[C] pb avec ncurse : des blagues carambar à gagner

pb avec ncurse : des blagues carambar à gagner [C] - C - Programmation

Marsh Posté le 19-09-2004 à 05:28:42    

Salut à tous,
 
Bon je pensais ne pas être trop mauvais en recherche internet pour trouver une solution à mon problème mais là, nada, niet, que dalle... :fou:  
 
Voila mon problême :  
 

Code :
  1. char buf[PACKET_SIZE];
  2. //  (...)
  3.   Fonction_qui_alimente_ptr;
  4. //  (...)
  5.   printf("%s",buf);
  6.   wprintw(W,"%s",buf);
  7.   wrefresh(W);


 
Normalement, je devrais avoir le contenu de ptr qui s'affiche dans W mais là, rien :heink:  
 
Alors pour être sûr qu'il y'ait keke chose dedans je fais un test de cochon (oui je sais) et je fais un printf, "pour voir", vu qu'ils ont normalement la même syntaxe...et là, printf fonctionne et m'affiche le contenu de ptr (à savoir :+OK <15618.1095564311@pop1-q.free.fr> ) :pt1cable:  
 
Pourquoi ? Finalement, peut-être n'ont-il pas la même syntaxe ?
 
Si vous avez des idées, n'hésitez pas, vous êtes un peu ma denière chance... :sweat:  
 
RQ : je précise que ptr contient une reponse d'un serveur POP3, le but de mon prog etant de faire un mini client POP3.  
 
re-RQ : j'envoie plein de blagues Carambar à celui qui trouve...sympa, non ? ARRRfffffh, j'en ai marre.... :fou:


Message édité par Corbax le 19-09-2004 à 11:05:56
Reply

Marsh Posté le 19-09-2004 à 05:28:42   

Reply

Marsh Posté le 19-09-2004 à 09:41:39    

bah non c'est pas bon ça ... c'est un tableau de pointeur sur chaines que tu as déclaré, par une simple chaine ...
donc soit tu fais :

Code :
  1. #   char *ptr[PACKET_SIZE];
  2. # //  (...)
  3. #   printf("%s",ptr[index]);


soit :

Code :
  1. #   char ptr[PACKET_SIZE];
  2. # //  (...)
  3. #   printf("%s",ptr);


 
Et puis gaffe dans le premier cas il faut allouer de la mémoire pour chaque chaine ...


Message édité par cricri_ le 19-09-2004 à 09:43:02
Reply

Marsh Posté le 19-09-2004 à 11:10:35    

oUpss :ange:
 
J'ai réeéditer ma question, effectivement la declaration est la 2éme que tu me propose...
 
Ca ne me donne pas la réponse(ça refuse toujours d'afficher), mais effectivement, doit y avoir une histoire d'adressage ou d'alloc de memoire....j'y retourne.
 
AU pasage, que font bcopy et bzero ? et que fait ptr=0x00 ?
 
Merci
 
 
 
 

Reply

Marsh Posté le 19-09-2004 à 11:18:05    

elles font rien.
 
utilise memcpy/memmove et memset

Reply

Marsh Posté le 19-09-2004 à 11:43:35    

Taz a écrit :

elles font rien.
 
utilise memcpy/memmove et memset


 
Certe, mais pourquoi preféré l'une à l'autre ? :heink:

Reply

Marsh Posté le 19-09-2004 à 11:52:52    

parce que tu trouveras bzero et bcopy sur tous les systèmes ...

Reply

Marsh Posté le 19-09-2004 à 11:54:04    

Taz a écrit :

parce que tu netrouveras pas bzero et bcopy sur tous les systèmes ...


 
non [:aloy] ?

Reply

Marsh Posté le 19-09-2004 à 11:55:23    

merde, effectivement j'ai un peu trop compressé là :D

Reply

Marsh Posté le 19-09-2004 à 13:56:37    

Ah, j'ai peut-être une piste :
 
comme wprintw(W,"%s",buf) ne m'affiche rien, j'ai essayé de feinter :)  
J'ai tenté d'afficher caractère par caractére de la façon suivante :
 
char *ptr
  ptr=strstr(buf_r,"" );
  i=0;
  while (i<strlen(ptr)){

    wprintw(w_res.W,"%c",ptr[i]);
    ptr++;
    wrefresh(w_res.W);
  }

 
 
Si je fait de cette façon, rien ne s'affiche, MAIS, si j'ajoute un carctère bidon, genre-, par exemple :
wprintw(w_res.W,"-%c",ptr[i]);
Ca m'affiche keke chose
donc :
- soit vous connaissez un caractère invisible et qui ne prend pas de place et dans ce cas j'applique cette solutioon bancale
- soit ça vous éclaire et vous me dites pourquoi mes wprintw(W,"%s",buf)n'affiche rien (ce serait tip top)
-soit je suis dans la m...
 
merci


Message édité par Corbax le 19-09-2004 à 13:58:38
Reply

Marsh Posté le 19-09-2004 à 13:59:09    

bidouille pas du C, c'est un massacre. si ça affiche pas, c'est un strict problème de ncurses (couleur, visibilié, wrefresh) ... vérifie de ce côté

Reply

Marsh Posté le 19-09-2004 à 13:59:09   

Reply

Marsh Posté le 21-09-2004 à 18:04:20    

et un fflush(stdout); ne resoudrait'il pas ton probleme ?

Reply

Sujets relatifs:

Leave a Replay

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