Debutant - unsigned char*

Résolu
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 - 25 mai 2005 à 15:59
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 - 26 mai 2005 à 09:17
Bonjour,

j'ai 2 question de débutant concernant unsigned char*



1- es-ce normal que le 1er caractere soit la longueur de la chaine?

2 - comment on supprime ce caractere? :)



c'est certainement tout simple, mais je développe en python et le C me semble tellement compliqué à comparé...



merci à vous

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
26 mai 2005 à 00:03
tu as ta chaine dans p par exemple. Alors *p contient la longueur de ta
chaine (entre 0 et 255), et p+1 contient la chaine réelle.



Il serait plus propre de faire:

typedef struct _chaine

{

int size;

char* p;

} chaine;
3
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
25 mai 2005 à 16:14
Normalement les chaines C se terminent par un caractère nul et commence ... par leur début...


mayonaise tournera, bientôt, très bientôt...
0
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 4
25 mai 2005 à 19:03
ok donc le fait que j'ai la taille de la chaine comme 1er caractere
(valeur limité à 256 même si ma chaine est plus longue d'ailleurs) est
peut-être lié à mon application. je développe ma 1ere dll et je la
variable que je reçois est une unsigned char*.



ceci dit comment on fait en C ou C++ pour récupéré qu'une partie de cette variable ou viré le 1er caractere ??
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
25 mai 2005 à 19:14
Si seulement le 1er car donne la taille, alors en incrementant le pointeur de 1 on a le contenu. Reste a savoir si ya bien un car nul à la fin.


mayonaise tournera, bientôt, très bientôt...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 4
25 mai 2005 à 20:37
ah?

et concretement je fais comment?
0
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 4
26 mai 2005 à 09:17
j'ai fait comme ça

void Py4D_RunString(unsigned char *command)

{

const char *chaine = (const char*) command+1;

Py_Initialize();

PyRun_SimpleString(chaine);

Py_Finalize();

}

et ça fonctionne bien



merci !
0