chaine de longeur fixe [facile mais jy arrrive po]

chaine de longeur fixe [facile mais jy arrrive po] - C++ - Programmation

Marsh Posté le 21-04-2003 à 18:06:44    

voila je doit passer une chaine de caractere dans une structure puis appeler une fonction qui lutilise , le prob c que la chaine doit faire 16 caracteres
 
je recupere cette chaine comme ca :
 

Code :
  1. char servername[16];
  2. GetDlgItemText(hWndDlg,ID_SNAME,servername,16);


 
 
ensuite je lance la fonction qui utilise le nom :
 

Code :
  1. memcpy(ncb.ncb_name,servername,16);
  2. Netbios(&ncb); //ca plante


 
 
//avant je faisait memcpy(ncb.ncb_name,"SERVER          ",16);  
//et ca marchait  
//jai essaye de faire ca avant dapeller memcpy :  
//sprintf(servername,"%16s",servername); mais c toujours pas bon


Message édité par red faction le 21-04-2003 à 18:08:24
Reply

Marsh Posté le 21-04-2003 à 18:06:44   

Reply

Marsh Posté le 21-04-2003 à 18:08:24    

qui des fonction str*?
tu es sur d'avoir de la place pour ton '\0' final?

Reply

Marsh Posté le 21-04-2003 à 18:10:31    

ok pour la taille du tableau mais au final ca fait ca
 
"SERVER\0         "
 
alors quit faudrait que ce soit comme ca :  
 
"SERVER          \0"

Reply

Marsh Posté le 21-04-2003 à 18:12:04    

red faction a écrit :

voila je doit passer une chaine de caractere dans une structure puis appeler une fonction qui lutilise , le prob c que la chaine doit faire 16 caracteres
 
je recupere cette chaine comme ca :
 

Code :
  1. char servername[16];
  2. GetDlgItemText(hWndDlg,ID_SNAME,servername,16);


 
 
ensuite je lance la fonction qui utilise le nom :
 

Code :
  1. memcpy(ncb.ncb_name,servername,16);
  2. Netbios(&ncb); //ca plante


 
 
//avant je faisait memcpy(ncb.ncb_name,"SERVER          ",16);  
//et ca marchait

//jai essaye de faire ca avant dapeller memcpy :  
//sprintf(servername,"%16s",servername); mais c toujours pas bon


 
 
et pourquoi tu gardes pas ta premiere solution  :??:

Reply

Marsh Posté le 21-04-2003 à 18:14:07    

parce que le nom du serveur a cree doit etre pouvoir choisi par lutilisateur , c mieux

Reply

Marsh Posté le 21-04-2003 à 18:30:13    

l'user entre ds un tablzeau de char, et tu mets des ' ' jusqu'a arriver a 16 caracteres dans ton tableau puis tu le copie dans la structure du ncb a la bionne place et c'est tout , non?
 
 

Reply

Marsh Posté le 21-04-2003 à 18:33:59    

moi j'ai toujours pas compris le problème

Reply

Marsh Posté le 21-04-2003 à 18:41:34    

++Taz a écrit :

moi j'ai toujours pas compris le problème


il a qu'à demander à dudu hein aussi!

Reply

Marsh Posté le 21-04-2003 à 18:48:26    

polo021 a écrit :


il a qu'à demander à dudu hein aussi!


 
 
toi t'en sait de trop  :non:  
 
 
 
(comment ta capté??????)

Reply

Marsh Posté le 21-04-2003 à 19:11:58    

red faction a écrit :


 
 
toi t'en sait de trop  :non:  
 
 
 
(comment ta capté??????)
 


 :lol:  
 :sol:  
 :hello:

Reply

Marsh Posté le 21-04-2003 à 19:11:58   

Reply

Marsh Posté le 21-04-2003 à 20:46:42    

Le \0 final, il est compté dans les 16 caractères ?

Reply

Marsh Posté le 21-04-2003 à 21:22:10    

non

Reply

Marsh Posté le 21-04-2003 à 22:18:18    

c bon je fait comme ca :
 
 
 

Code :
  1. void strn(char* str){
  2.      int i=0;
  3.      for( ; *str= toupper(*str) ; str++,i++ );
  4.  for( ; i<16 ; str++,i++ ) *str= ' ';
  5. }

Reply

Marsh Posté le 21-04-2003 à 22:19:24    

qu'estce que t'en à a foutre de mettre du blanc après. ça suffit pas un \0?

Reply

Marsh Posté le 21-04-2003 à 22:44:16    

++Taz a écrit :

qu'estce que t'en à a foutre de mettre du blanc après. ça suffit pas un \0?


si j'ai bien compris c'est ca le probleme, il faut du blanc apres.
 
EDIt  : et ca fonctionne comme ca?


Message édité par polo021 le 21-04-2003 à 22:51:13
Reply

Sujets relatifs:

Leave a Replay

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