2010-07-25 5 views
0

Je suis très nouveau en C et maintenant je suis coincé avec un problème simple. Je veux récupérer le ième élément de la liste et j'ai l'API suivante. L'argument 'sp' spécifie le pointeur vers la variable dans laquelle la taille de la région de la valeur de retour est affectée.C - Récupérer des éléments d'une liste

const void *tclistval(const TCLIST *list, int index, int *sp); 

La liste contient des valeurs uint64_t. Comment puis-je récupérer le ième élément?

post-scriptum Plus de détails sur cette fonction:

La valeur de retour est le pointeur vers la région de la valeur. Parce qu'un code zéro supplémentaire est ajouté à la fin de la région de la valeur de retour, la valeur de retour peut être traitée comme une chaîne de caractères. Si 'index' est égal ou supérieur au nombre d'éléments, la valeur de retour est 'NULL'.

Répondre

2

Si vous connaissez la liste contient uint64_t éléments, il est juste

int sp; 
uint64_t elem; 
elem = *(uint64_t *) tclistval(list, i, &sp); 

sp contiendra la taille de l'objet retourné, que vous connaissez déjà si vous n'avez pas à vous inquiéter à ce sujet.

Vous pouvez également effectuer une vérification d'erreur d'abord:

uint64_t *pelem = tclistval(list, i, &sp); 
if (pelem == NULL) { /* error! */ } 
else 
    elem = *pelem; 
+0

merci pour votre aide – mkn

Questions connexes