Je veux prendre quelques champs de la structure de paquet en utilisant l'arithmétique de pointeur. Mais qu'est-ce qui ne va pas avec le code ci-dessous?
Dans la première condition je pense que si je vais 4 byte (2 court champ) du début du paquet je reçois tLow .Mais il ne donne pas la valeur attendue. En outre deuxième cas je veux obtenir le champ de données en allant 12 octets du début du paquet Quel est le problème avec mon idée?problème d'affectation de void *
struct packet{
short len;
short field;
int tLow;
int tHigh;
void *data;
}
int main()
{
struct packet pack;
struct packet *pck;
pack.len=3;
pack.field=34;
pack.tLow=712;
pack.tHigh = 12903;
pack.data = "message";
pck = &pack;
int *timeLow = (int *)pck + 4; // i want to get tLow
printf("Time Low :%d\n",*time);
char *msg = (char *)pck + 12 ;// want data
printf("Message :%s\n",msg);
return 0;
}
J'espère que c'est un exercice d'apprentissage et non un code de production. C'est un excellent exercice, mais je ne veux jamais voir de vrai code comme celui-ci. –
Vous voulez dire accéder à la méthode des membres struct avec le calcul d'octets ou d'autres choses? – Qxtrml