yes i got what you were trying to say..
but i just found that declaring any more pointers in my program causes seg. fault...
here's the code...
if i delelte any one of the colored part the seg. fault goes away ..
otherwise however.. any pointer declaration gives an error..
i have a 768 mb ram on my comp.. could it be a memory problem??
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "structures.c"
int main()
{
FILE *stream;
if((stream=fopen("block2.dat","r"))!=NULL){
printf("Succesfully opened file\n");
}
else{
printf("Failed to open file\n");
exit(1);
}
char number[5];char temp[10];
char num_i[5],num_j[5],num_k[5];
int j=0;int k=0;int i=0;int l,m,z,loop_var;
fscanf(stream,"%s", number);
num_blocks=atoi(number);
printf("%i\n",num_blocks);
struct block arr_blocks[num_blocks];
int no_i,no_j,no_k,total_points;
for(i=0;i<num_blocks;i++){
fscanf(stream,"%s %s %s", num_i,num_j,num_k);
arr_blocks[i].id=i;
arr_blocks[i].points[0]=atoi(num_i);
arr_blocks[i].points[1]=atoi(num_j);
arr_blocks[i].points[2]=atof(num_k);
arr_blocks[i].cells[0]=(atoi(num_i))-1;
arr_blocks[i].cells[2]=(atoi(num_j))-1;
arr_blocks[i].cells[1]=(atoi(num_k))-1;
}
struct point *p_map,*p_map_2;
struct covar ***p_covariant[num_blocks];
struct contra ***p_contravariant[num_blocks];
for(loop_var=0;loop_var<num_blocks;loop_var++){
total_points=(arr_blocks[loop_var].points[0])*
(arr_blocks[loop_var].points[1])*(arr_blocks[loop_var].points[2]);
//allocating memory for covar
p_covariant[loop_var]=
(struct covar***)malloc(sizeof(struct covar**)*((arr_blocks[i].cells[0])));
for (i=0; i<(arr_blocks[i].cells[0]); i++)
{
p_covariant[loop_var][i] =
(struct covar**)malloc(sizeof(struct covar*)*(arr_blocks[loop_var].cells[1]));
for (j=0; j<(arr_blocks[loop_var].cells[1]); j++)
{
p_covariant[loop_var][i][j] =
(struct covar*)malloc(sizeof(struct covar)*
(arr_blocks[loop_var].cells[2]));
}
}
**p_covariant[loop_var]=&p_covariant[loop_var][0][0][0];
p_contravariant[loop_var] = (struct contr..........*)malloc(sizeof(struct contr..........)*
(arr_blocks[i].cells[0]));
for (i=0; i<(arr_blocks[i].cells[0]); i++)
{
p_contravariant[loop_var][i] =
(struct contr..........)malloc(sizeof(struct contra*)*(arr_blocks[loop_var].cells[1]));
for (j=0; j<(arr_blocks[loop_var].cells[1]); j++)
{
p_contravariant[loop_var][i][j] =
(struct contra*)malloc(sizeof(struct contra)
*(arr_blocks[loop_var].cells[2]));
}
}
**p_contravariant[loop_var]=&p_contravariant[loop_var][0][0][0];
//Read all the co-ordinates from the file
p_map=(struct point*)malloc(sizeof(struct point)*total_points);
printf("%u\n",p_map);
p_map_2=p_map;
printf("%u\n",p_map_2);
j=0;k=0;
for(k=0;k<3;k++){
for(i=0;i<total_points; i++){
fscanf(stream,"%s",temp);
(*p_map).coords[k]=atof(temp);
p_map++;
}
}
}
return 0;
}