Witam
Próbuję napisać program który będzie przechowywał ceny diamentów. Muszę napisać funkcję, która pobierze od użytkownika ilość diamentów, a następnie dla każdego z nich pobierze jego cenę. Chciałem użyć funkcji malloc do stworzenia tablicy dynamicznej. Problem pojawia się, gdy próbuje pobrać ceny.
Gdy zapiszę w ten sposób:
void wczytanie(int **lista, int *liczba)
{
int i;
printf("Podaj liczbę diamentów\n");
scanf("%d", *&liczba);
*lista = malloc(*liczba*sizeof(int));
}
int main(void)
{
int i, liczba;
int *lista;
wczytanie(&lista, &liczba);
for(i=0;i<liczba;i++)
{
scanf("%d",&lista[i]);
};
free(lista);
return 0;
}
działa, ale jak próbuję pętlę for przenieść do funkcji pokazuje mi naruszenie ochrony pamieci już przy próbie zapisania drugiej ceny:
#include<stdio.h>
#include<stdlib.h>
void wczytanie(int **lista, int *liczba)
{
int i;
printf("Podaj liczbę diamentów\n");
scanf("%d", *&liczba);
*lista = malloc(*liczba*sizeof(int));
for(i=0;i<(*liczba);i++)
{
scanf("%d",lista[i]);
};
}
int main(void)
{
int i, liczba;
int *lista;
wczytanie(&lista, &liczba);
free(lista);
return 0;
}
Jestem początkującym programistą, nie moge niczego wymyślić ani znaleźć podobnego problemu. Z góry dzięki za pomoc