Funkcja tworząca tablicę dynamiczną

0

Witam!

Mam problem z funkcją- muszę ją zrobić tak, by w niej została stworzona tablica, za pomocą malloc'a. Ponadto mój wskaźnik, ma być typu strukturowego (struktura *wsk)

int funkcja (int k, struktura *wsk)
{
	if ((wsk=(struktura *)malloc((k)*sizeof(struktura)))==NULL)
	{
		printf("blad przy alokacji tablicy");
		exit(1);
	}
	return 0;
}

a w main()

funkcja(k,wsk);

jak to zrobić, żeby funkcja tworzyła za pomocą malloca tablicę? Program wyrzuca mi błąd jak próbuję wejść do funkcji... :/

1
#include <stdio.h>

void *malloc_wrapper(int size){
	return malloc(size);
}

typedef struct{
	int x, y;
} Foo;

int main(void) {
	const int size = 2;
	Foo *foo = malloc_wrapper(2*sizeof(Foo));
	return 0;
}
3

Albo

struktura *Funkcja(unsigned int k)

albo

int funkcja (int k, struktura **wsk)

Inaczej nie będzie działało prawidłowo.

0

Kaczus, poraz kolejny ratujesz mi tyłek. Dzięki! Niech kod Ci sprzyja.

3

wsk to tylko kopia, więc po wyjściu z funkcji parametry które przekazałeś do funkcji nadal mają stare wartości. Rozwiązania problemu podał @kaczus.

if ((wsk=(struktura *)malloc((k)*sizeof(struktura)))==NULL)

Płacisz za ilość linijek w kodzie, że musisz to tak zagęszczać? Podziel to, żeby było czytelne.

wsk = (struktura*) malloc (k * sizeof(struktura));
if (!wsk)
{
    ...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.