I am in the process of converting a C++ program to C and have run into
a major problem with 2D dynamic arrays in C. The code I have posted
below is just a test, but it does not work.

What I am trying to do is read data from a file to figure out its
dimensions (width and height) and then allocate an array with those
values. I can get the dimensions just fine. I run into problems
feeding those values into the dynamic allocation of the array.

Ok heres the code...thanks in advance for the help!!!
Code:
	
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i, j;
	int h=0, ho=0, w=0, wo=0, counter_w=0, counter_h=0, width=0;
	char ch;


FILE *input_file, *ouput_file;				/* Input file pointer

/* GET WIDTH AND HEIGHT OF MATRIX FROM FILE*/     
           
	input_file = fopen("input.dat", "r");	
	if(input_file == NULL)
	{
		printf("can't open file \n");
		return 1;
	}

	else  
	{
		while((ch=getc(input_file)) !=EOF)
		{

			if(ch != '\n')						/* Note: looking at white space also */
				counter_w++;					/* counter_w = total character count */
			else
				counter_h++;					/* counter_h for height only */
		}
	}


	width = ((counter_w)/16)/(counter_h);		/* calculates width */
												                                /* '16' comes from fixed
width of values + white space */

	printf("width = ");
	printf("%d", width);
	printf("\n");

	printf("height = ");
	printf("%d", counter_h);
	printf("\n");

	h = counter_h;
	ho = counter_h;
	w = width;
	wo = width;

	fclose(input_file);						


/* DYNAMICALLY ALLOCATE ARRAY */

	double **test;

	test = (double **)malloc(ho * sizeof(double *));
	for(i=0; i<ho; i++)
		test[i] = (double *)malloc(wo * sizeof(double));

/* END DYNMAICALLY ALLOCATING ARRAYS  */

	free(test);

	return 0;

}
&#91;code]&#91;/code]tagged by Salem