[C] Allocazione dinamica della memoria

Atem1
Salve ragazzi,
io so come si crea un array usando con la malloc all'interno del main.
Ma se invece di farlo nel main io volessi proprio creare una funzione "crea_vettore" come vanno passati i parametri?

Allora questo è il codice che all'interno del main funziona:

    int dim, *vettore;
    printf ("Quanti elementi vuoi inserire? ");
    scanf ("%d", &dim);


   int i;
   vettore= (int*) malloc(sizeof(int)*dim);
   for (i=0; i<dim; i++)
    {
        printf ("%d elemento: ", i+1);
        scanf ("%d", &vettore[i]);
    }


Perchè se lo metto dentro la funzione non va?
Io faccio così:

Nel main:
    vettore= (int*) malloc(sizeof(int)*dim);
    crea_vettore(dim, vettore);


E poi faccio:

void crea_vettore (int dim2, int *vettore2)
{
    int i,;

   for (i=0; i<dim2; i++)
    {
        printf ("%d elemento: ", i+1);
        scanf ("%d", vettore2[i]);
    }
}



Perchè questa funzione "crea_vettore" non va? Grazie mille per le risposte :)

Risposte
Obidream
Con qualche leggera modifica sembra funzionare :)

#include <stdio.h>
#include <stdlib.h>

void creavettore(int dim, int *vett);

int main()
{
int *vettore;
int dim,i;
printf("Quanti elementi vuoi inserire?\n");
scanf("%d",&dim);
vettore= (int*) malloc(sizeof(int)*dim);
if(vettore==NULL)
    {
    printf("Errore...");
    exit(1);
    }
creavettore(dim,vettore);
printf("Hai inserito il seguente vettore:\n");
for(i=0;i<dim;i++)
    printf("Elemento %d: %d\n",i+1,vettore[i]);
free(vettore);
return 0;
}


void creavettore(int dim, int *vett)
{
int i;
for (i=0; i<dim; i++)
    {
        printf ("%d elemento: ", i+1);
        scanf ("%d",&vett[i]);
    }
}

Atem1
Quindi alla fine l'unica cosa che ho sbagliato era:
scanf ("%d",&vett[i]);

dove io non avesso messo la &.
Che strano, eppure la prima volta l'avevo fatto così e non andava.
Ora comunque funziona, ti ringrazio tantissimo :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.