Pour le remplissage au fur et à mesure, l'exemple de Trademark est très bien.
Sinon dans ton exemple, tu te butes aux difficultés des types de données.
Un type, c'est plusieurs choses :
- D'abord une façon d'interpréter les données que ce soit des types natifs au langage (entier non signé, signé en complément à 2, nom flottant IEEE754, caractère ASCII, booléen) ou des types composés (structure sans fonction).
- Mais c'est aussi un encombrement mémoire.
C'est pour cela qu'un tableau de char prendra moins de place qu'un tableau de int, et aussi que l'adresse de la ième case ne sera pas la même si ton tableau est un tableau de int ou de char.
Ainsi, quant tu fais
printf("resultat =%d\n",c);
Tu dis à l'ordinateur de prendre un caractère de la taille d'un char, et d'afficher les données en tant que nombre. Et donc tu n'obtiens que le premier octet de ta ton type sur 4 octets.
En code c (puisque tu es parti sur un exemple c et non c++), ma réponse de tout à l'heure devient :
1 2 3 4 5 6 7 8
|
int *pnum = &c[i]; //À l'adresse indiqué, on trouve un int
//OU
int num;
memcpy(&num, &c[i], sizeof(num)); //À partir de l'adresse de num, et jusqu'à avoir atteint la taille occupée par num, on copie les données qu'on trouve à l'adresse indiquée, qui est celle de la ième case du tableau de char.
//OU
int *pnum;
memcpy(pnum, &c[i], sizeof(*num)); |
Partager