[C] Przekazanie wielowymiarowej tablicy dynamicznej z funkcj

0

Witam!

Pisze program do przerabiania formatów obrazów.. Zasada działania programu jest prosta otwiera obrazek pgm zczytuje z niego dane do tablicy, binearyzuje dane i zapisuje do innego piku.

Mój problem polega na zwróceniu tablicy dynamicznej z funkcji odczyt aby wykożystać ją w funkcji zmiana, gdzie obraz będzie binearyzowany

int odczyt (nazwa_pliku,x,y)
{
	FILE *fp;
	int i,j;
	int **tabliczka;
	fp=fopen(nazwa_pliku, "r");
	
	tabliczka = malloc(x * sizeof *tabliczka);          
	for (i = 0; i<x; ++i) 
	{                             
		tabliczka[i] = malloc(y * sizeof **tabliczka);  
	}                                                         
 
	for (i = 0; i<x; ++i) 
		{
			for (j = 0; j<y; ++j) 
				{
					fscanf(fp, "%d",&tabliczka[i][j]);  
					
				}
   
		}


	return tabliczka;

}
int zmiana (tabliczka,x,y)
{
	/.../
}
0

int** odczyt (nazwa_pliku,x,y) ? ;-P

0

?

0

na szybko zrobiony przykład

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

int **new2d(int w, int h)
{
	// h wskaźników na wiersze tablicy
	int **tab = (int **)malloc(h * sizeof(int *));
	int i ;

	// kazdy z h wskaźników wskazuje na wiersz o długości w
	for (i = 0; i < h; i ++)
		tab[i] = (int *)malloc(w * sizeof(int));

	return tab;
}

void init2d(int **tab, int w, int h)
{
	int x, y;

	for (y = 0; y < h; y ++)
		for (x = 0; x < w; x ++)
			tab[x][y] = rand()%10;
}

void del2d(int **tab, int h)
{
	while (h)
		free ((void *)tab[h--]);

	free ((void *)tab);
}

int main()
{
	int x, y;
	int **matrix = new2d(10, 10);
	init2d(matrix, 10, 10);

	for (y = 0; y < 10; y ++)
	{
		for (x = 0; x < 10; x ++)
			printf("%d", matrix[x][y]);

		printf("\n");
	}

        del2d(matrix);
	return 0;
}
0

Mega + dla Ciebie !!

0

prosciej 2D traktowac jako 1D, a umiec tylko obliczyc indeks w takiej tablicy ;-)

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