|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Anthony Inscription : novembre 2010 Messages : 27 ![]() |
Salut a tous,
Voila j'ai un souci, je suis en train de creer une FIFO en c qui peut contenir n'importe quel type de donnée, ma structure a donc un pointeur sur void comme element principal.. lorsque je veux retirer mon premier element de ma file (la tete), je dois d'abord sauvegarder son contenu dans un buffer (void * aussi), pour copier les données, jutilise alors memcpy, cependant j'ai un souci, lorsque je le fais, j'arrive a afficher le contenu du buffer DANS la fonction (dequeue), mais pas dans le MAIN... Je ne comprend pas d'ou vien l'erreur... voici le code Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 5 331 ![]() |
Bonsoir,
buf situé en paramètre de la fonction dequeue() est une copie du pointeur cpy. Tu ne fais que modifier la copie et non le pointeur original. Code :
Ne pas oublier de libérer la mémoire (queue_free() ou fonction du genre + free(cpy)) à la fin. |
||
|
|
10
|
|
|
#3 | ||
|
Anthony Inscription : novembre 2010 Messages : 27 ![]() |
Ah merci beaucoup pour cette reponse.. j'ai juste oublier que je n'ai pas le droit de modifier la definition de dequeue dans le .h a savoir
Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 5 331 ![]() |
Dans ce cas, effectue l'allocation en dehors de ta fonction dequeue().
Remarque : la chaîne "bonjour" compte 8 éléments : 'b', 'o', 'n', 'j', 'o', 'u', 'r' et le '\0' final, de même "comment". |
|
|
10
|
|
|
#5 |
|
Anthony Inscription : novembre 2010 Messages : 27 ![]() |
Ah exact, merci dsl je suis novice en c lol , j'essaie tout ça et je vous tiens au courant, merci encore
|
|
|
00
|
|
|
#6 |
|
Anthony Inscription : novembre 2010 Messages : 27 ![]() |
En fait le truc chiant aussi c'est que le buffer doit etre alloué DANS la fonction.... Je ne comprend vraiment rien
|
|
|
00
|
|
|
#7 |
|
Anthony Inscription : novembre 2010 Messages : 27 ![]() |
salut
si j'ai un pointeur void comment je fais pour bouger le pointeur ? si j'ai void * buf, comment je fais pour avancer ce pointeur de n octets sur mon buf , buf += n sa ne fonctionne pas on dirait... |
|
|
00
|
|
|
#8 | ||||
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 488 ![]() |
Citation:
Code :
Citation:
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
||||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com