Debutant - unsigned char* [Résolu]

Signaler
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
-
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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;
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

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...
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
3
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 ??
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

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...
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
3
ah?

et concretement je fais comment?
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
3
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 !