Discussione: Funzione in C
View Single Post
Old 28-02-2009, 15:07   #5
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Beh, la struttura in questione del buffer è un array di byte.

E' abbastanza semplice fare quello che vuoi sapendo che il buffer è così composto :

[#elementi][ELEMENTI : [ID blocco][#elementi blocco][elementi blocco] ]

Mi viene in mente qualcosa del genere:

Codice:
struct nodo_valori {
    int numero_elementi;
    unsigned char* valori;
    struct nodo_valori* next;
};

typedef struct nodo_valori nodo_valori;
typedef nodo_valori* lista_valori;

lista_valori funzione(unsigned char* buffer)
{
    lista_valori lista = NULL;
    lista_valori* current_next = &lista;
    int numero_elementi = buffer[0];
    int elementi_estratti = 1;
    int elementi_blocco = 0;
    int id_blocco = 0

    while (elementi_estratti < numero_elementi)
    {
          *current_next = (lista_valori) malloc(sizeof(nodo_valori));
          id_blocco = buffer[elementi_estratti];
          elementi_estratti++;         
          elementi_blocco = buffer[elementi_estratti];
          elementi_estratti++;
          *current_next->numero_elementi = elementi_blocco;
          *current_next->valori = (unsigned char*) malloc(sizeof(unsigned char)*elementi_blocco);
          *current_next->next = NULL;
          memcpy(*current_next->valori, buffer+elementi_estratti, elementi_blocco);
          elementi_estratti += elementi_blocco;
          current_next = &(*current_next->next);
   }

    return lista;
}
Spero di aver capito quello che volevi e di non aver fatto errori grossolani visto che è un po' che non uso il C.

Ciao
__________________
GPU Compiler Engineer

Ultima modifica di AnonimoVeneziano : 28-02-2009 alle 15:10.
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso