Buenas,
Estoy escribiendo un programa que a partir de dos nombres (en forma de string) y dos numeros, me escriba en un fichero los datos de la primera columna que estan comprendidos entre los dos numeros, en un segundo fichero. El problema que me sale es que al leer el valor de la columna y compararmelo con los limites que le he dado en un princio, me coge el valor cogido de la columna como 0.0, en lugar del valor ha tomado del primer fichero. Por tal de encontrar el error, he escrito una serie de printf y he averiguado que el valor del primer fichero se guarda correctamente en "t" pero luego, a la hora de operar para enconrar "z" o para mirar si esta dentro del intervalo, me utiliza el valor 0.0, y no he conseguido averiguar porque.
Les adjunto el codigo:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define dim 5
#define dim2 10000
void fichero1 (char* nombre, char* nombrefinal, double juliana1, double juliana2);
int main(){
double juliana1,juliana2;
char a[dim] = "a.txt",b[dim] = "b.txt";
juliana1 = 100000000;
juliana2 = 200000000;
fichero1(a,b,juliana1,juliana2);
return 0;
}
void fichero1 (char* nombre, char* nombrefinal, double juliana1, double juliana2){
int i,i2;
char aux[dim2] = "";
long double x,t=0,y1,y2;
double z;
y2 = 0.0;
printf("%f \n", juliana1);
printf("%f \n", juliana2);
FILE* archivo = NULL;
FILE* datos = NULL;
archivo = fopen(nombre, "r");
datos = fopen(nombrefinal, "w");
for (i=1;i<40;i++){
if (i <= 32){
fscanf(archivo, " %[^\n]", &aux);
}
else{
for (i2=1;i2<=3;i2++){
if (i2==1){
fscanf(archivo, "%lf", &t);
//Ponemos unos printf de prueba.
printf("juliana1 = %lf \n", juliana1);
printf("t = %lf \n", t); // <-- aqui escribe el valor correcto de t.
z = t-juliana1; // <-- aqui, sin embargo, toma t = 0 para calcular z.
printf("z = %f \n", z);
if (t>juliana2){
goto BCN;
}
if ((t > juliana1) && (t < juliana2)){ // <-- aqui tambien coje t = 0.
fprintf(datos, "%lf ", t);
}
}
if (i2==2){
fscanf(archivo, "%lf", &y1);
if ((t > juliana1) && (t < juliana2)){
fprintf(datos, "%lf ", y2);
}
}
if (i2==3){
fscanf(archivo, "%lf", &x);
if ((t > juliana1) && (t < juliana2)){
fprintf(datos, "%lf \n", x);
}
}
}
}
}
BCN:
return;
}
Gracias por adelantado.