Tablica wielowymiarowa jako parametr funkcji

0

Witam. Chodzi o czysty C. Program ma z pliku wczytywać liczby do macierzy. Oczywiscie zrobilem malloca wczesniej. Napisałem taką funkcję(zamieszczam tylko jej fragment, bo nie ma znaczenia to co jest dalej):


wpisz_do_tablicy(int **nazwa_tablicy, const char *nazwa_pliku) {

    macierz_a = fopen(nazwa_pliku, "r"); 

    while (feof(macierz_a) == 0)
    {
        x = fgetc(macierz_a);

        if ((x >= '0') && (x <= '9'))
        {
            //printf("mam cyfre!!! %c\n", x);
            int liczba = atoi(&x);
            my_number = my_number * 10 + liczba;
            nazwa_tablicy[i][j] = my_number;

    }
    fclose(macierz_a);

}

Funkcję wywołuje w main w taki sposób:


int main()
{

    char* macierz_a = "macierz_a.txt";
    int **tab1;
    wpisz_do_tablicy(tab1, macierz_a);
}

Problem mam z pierwszym parametrem. Ma on być nazwą tablicy do której będą wpisywane cyfry. Czyli w mojej funkcji tam gdzie jest "nazwa_tablicy" program ma to zamienić na "tab1". Nie chce mi to zadziałać. Co robię źle ? Próbowałem przed "tab1" dopisywać *, ** albo &. Nie przyniosło to rezultatu.
Visual wywala dokładnie taki błąd:

Exception thrown: read access violation.

nazwa_tablicy was 0xCDDDCDDE.

If there is a handler for this exception, the program may be safely continued.

Zamieszczę ewentualnie malloca:


alokuj_pamiec(int **nazwa_tablicy, int kolumny, int wiersze){
    nazwa_tablicy = (int**)malloc(wiersze * kolumny * sizeof(int));

    for (int i = 0; i<(kolumny); i++)
    {
        nazwa_tablicy[i] = (int*)malloc(kolumny * sizeof(int));
    }

    for (int j = 0; j<(wiersze); j++)
    {
        nazwa_tablicy[j] = (int*)malloc(wiersze * sizeof(int));
        printf("%d", j);
    }

i w taki sposób go wywołuje:


int main()
{

    int tab1_k = 0;
    int tab1_w = 0;
    otworz_i_zlicz(macierz_a, &tab1_k, &tab1_w);
    alokuj_pamiec(&tab1, tab1_k, tab1_w);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0