RESTITUIRE UN VETTORE DI STRUTTURE HELP

di il
7 risposte

RESTITUIRE UN VETTORE DI STRUTTURE HELP

Ciao a tutti,

vorrei sapere come fare a restituire un vettore di strutture al main da un'altra funzione.

Mi spiego meglio. Ho scritto una funzione che mi crea un array di strutture e vorrei restituire questo array al main, ma non so come fare e su internet non ho trovato niente che possa essermi di aiuto, c'è qualcuno che sa come si fa?

Geazie

7 Risposte

  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    Resituisci il valore del puntatore all'array
  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    Potresti essere un po' più chiaro?
    Magari con un esempio di codice?

    Grazie
  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    Più che un esempio mio sarebbe utile vedere cosa hai scritto tu e a quale struttura ti riferisci.

    In generale, un puntatore viene restituito da una funzione con
    
    tipodato *funzione(parametri ...)
    {
       tipodato  *p;
    
       ----
    
       return p;
    }
    
  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    allora, la funzione l'ho definita come segue

    struct *genera_vettore_di_strutture (int []);

    dopo ho definito la struttura

    typedef struct{
    int pacc[8];
    } pacchetto;
    nel main ho definito la variabile di tipo struttura

    pacchetto *pc;

    richiamo la funzione nel main

    pc = genera_vettore_di_strutture(vett_bit);

    e la funzione é:
    
    
     struct *genera_vettore_di_strutture (int array_bit[]){
        int x; 
        int i = 0;
        int y = 0;
        pacchetto *vett;
          
          vett = (pacchetto *) malloc(sizeof(pacchetto)* 12);
          
          for(x=0; x<numero_bit; x++){
                      if(i<8){
                      vett[y].pacc[i] = array_bit[x];
                      printf("%d", vett[y].pacc[i]);  // istruzione di verifica
    				  i++;  
                      } // fine if
                      
                      if(i>7){
                      printf("\n");        
                      i=0;
                      y++;
                      } // fine if
           }// fine for
                   
                  return vett;
                            
    } // fine funzione
    
    ma mi da un errore in corrispondenza della prima definizione della funzione.
    Non riesco a capire perchè
  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    Usa i tag CODE o non si capisce nulla del codice.

    In ogni caso non può essere

    struct *genera_vettore_di_strutture (int array_bit[]){

    ma semmai

    pacchetto *genera_vettore_di_strutture (int array_bit[]){
  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    Intendevi fare qualcosa tipo questo?
    
    typedef struct _PACCHETTO
    {
        int bit[8];
    }PACCHETTO;
    
    PACCHETTO* makepack(int* bitvector,int sizevector)
    {
        int npacchetti = sizevector / 8;
        int extra = 0;
        if (sizevector % 8) extra = 1;
        
        PACCHETTO* p = (PACCHETTO*) malloc(sizeof(PACCHETTO) * (npacchetti + extra) );
            if (p == NULL) return NULL;
    
        int i,j;
        for (i=0 ; i < npacchetti ;i++)
            for (j=0; j < 8 ;j++)
                p[i].bit[j]=*bitvector++;
        
        for (j = 0; j < sizevector % 8 ; j++)
            p[i].bit[j]=*bitvector++;
        
        return p;
    }
    
  • Re: RESTITUIRE UN VETTORE DI STRUTTURE HELP

    Grazie Oregon, ho riusolto come dicevi tu.
Devi accedere o registrarti per scrivere nel forum
7 risposte