Когда я ввожу значения в документ и распечатываю их из одного и того же цикла, я печатаю правильные значения. Однако, как только я помещаю значения после того, как они были помещены в массив в другом цикле примерно на половину пути, я получаю неправильные значения, остальные согласны. Спасибо за любую помощь!Распечатка дополнительных 2 строк в моем коде
int main(){
int i = 0;
int n = 0;
float x, y, x1, y2;
FILE *fp;
/*open the file*/
fp = fopen("/Users/QuantumEh/Documents/datafiles/table.dat", "r");
/*creates array which allocates appropariate size*/
float *x_axis = (float*) malloc(sizeof(fp));
float *y_axis = (float*) malloc(sizeof(fp));
if (fp == NULL){
printf("Could not open \n");
exit(0);
}
/*reads in the file*/
while (fscanf(fp, "%f %f\n", &x_axis[i], &y_axis[i]) == 2){
printf("%.3f %.3f \n", x_axis[i], y_axis[i]);
i++, n++;
}
/* calculates at one-third and then at two-thirds*/
for (i = 0; i <= n - 1; i++){
x = x_of_interpolation_onethird(x_axis[i + 1], x_axis[i]); //finds x of interpolation
y = lagrange_interpolation(&x_axis[i], &y_axis[i], x); //plugs in the orignal x and y and the x of interpolation
x1 = x_of_interpolation_twothird(x_axis[i + 1], x_axis[i]); //finds the other x of interpolation
y2 = lagrange_interpolation(&x_axis[i], &y_axis[i], x1); //plugs in the orignal x and y and the x of interpolation
/* prints out all the numbers*/
//printf("%.3f %.3f \n", x_axis[i], y_axis[i]);
//printf("%.3f \n", x1);
//printf("%.3f %.3f\n", x, y);
}
return 0;
}
некоторое время, так как я сделал C файл IO, но я не думаю, что sizeof (fp) даст вам достаточное выделение. – kenny
'sizeof (fp)' полностью не имеет отношения к «соответствующему размеру» - когда вы выделяете крошечные массивы и записываете путь от конца, все, что угодно может произойти. – Notlikethat