Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
double finalcalc(double array[][3], int N);
int main()
{
FILE* input;
int N;
char type;
double array[N][3];
double *ptr;
int i, j;
double finalvalue;
input=fopen("filename.xyz", "r");
/*NEW BIT THAT I JUST ADDED*/
fscanf(input, "%d", &N);
printf("N is %d\n", N); //This gives me 4
/*END NEW BIT*/
ptr=malloc(((double)N*3)*sizeof(double));
i=0;
for(i=0;i<N;i++)
{
fscanf(input, "%s", &type);
j=0;
for(j=0;j<3;j++)
{
fscanf(input, "%lf", &array[i][j]);
printf("array in i = %d and j = %d is %lf\n", i, j, array[i][j]);
}
}
fclose(input);
printf("N is still %d\n", N); //This gives me 0
finalvalue=finalcalc(array, N);
printf("final is %lf\n", finalvalue);
return 0;
}
double finalcalc(double array[][3], int N)
{
double final=0;
double finalvalue=0;
int i=0;
int j=0;
for(i=0;i<N;i++)
{
j=0;
for(j=0;j<3;j++)
{
printf("array in i = %d and j = %d is %lf\n", i, j, array[i][j]);
}
}
final = 5 * 6; /* The actual mathematics is more complex but left it out for ease */
printf("Final value is %lf\n", final);
return(finalvalue);
}
filename.xyz looks like this
Code:
4
O -0.906801 0.569837 0.066005
O 0.956585 -0.258900 0.342064
O -0.962633 0.494832 0.380356
O -0.259093 0.292540 0.854958
The problem seems to be in my reading of N. In my first printf it reads perfectly as 4 but it seems to disappear by the second call?
Thanks