Bonjour a tous et toutes,
Alors voilà, vous connaissez sûrement la fonction bzero qui met a 0 les n premiers octets du bloc pointé par s.
On m'a conseillé pour m'améliorer et mieux comprendre la programmation, d'essayer de re-coder les fonctions que j'utilise histoire de bien comprendre comment elles fonctionnent.
Pour le moment, je dois avouer que c'est un bon conseil, il permet surtout de pratiquer, même sans projet concret derrière.
Bref, le prototype de bzero est le suivant : void bzero (void *s, size_t n);.
Le principe de la fonction ne me pose aucun problème particulier mais je me retrouver "bloquer" par ce void*. Comment accéder aux "n" premiers éléments d'un void* ?
J'étais parti pour tenter un simple s[i] = 0, mais j'ai alors un problème de déréférencement de void*. J'ai donc tenté de faire le même procéder via les calculs de pointeurs directement.
J'ai donc tenté un (&s + i) = 0. Mais bon, ce n'est que peu concluant puisque au lieu d'avoir une erreur de déréférencement, j'ai une erreur de type
Donc première question : Si je comprends bien ma deuxième erreur, le compilateur me dit qu'il ne peut pas assigner quelque chose à "rien", donc il ne reconnaît pas mon expression (&s + i) c'est bien ça ?lvalue required as left operand of assignment (&s + i) = 0;
Deuxième question : Comment je peux manipuler mon void* pour pouvoir le parcourir jusqu'à son "n" élément, et assigner des valeurs au passage ?
Merci d'avoir lu mon message et du temps que vous prendrez pour y répondre.
Partager