Próbuję odczytać plik, który ma następującą zawartość:Reading Scientific Notation w C
1.0000000e + 01 2.9265380e + 03 + 02 4.3231640e 5.0821200e + 01
2.0000000e + 01 1.0170240e 9.2798610e + 04 + 02 4.0723180e + 01
3.0000000e 2.1486260e + 01 + 04 + 03 1.1832420e 1.0328000e + 01
4.0000000e 3.3835080e + 01 + 04 + 03 1.1882285e - 9.3307000e + 00
5.0000000e 4.5250830e + 01 + 04 + 03 1.0899705e -1.0320900e + 01
6.0000000e 5.5634490e + 01 + 04 + 02 9.8935650e -9.8019000e + 00
7.0000000e + 01 6,5037960 e + 04 8.9134700e + 02 -9.8000000e + 00
ale nie mogę znaleźć odpowiedniego sposobu na odczytanie notacji naukowej. Oto co mam kodu:
#include <stdio.h>
#include <stdlib.h>
int main()
{
// This is the array to store the input
double time[24], altitude[24], velocity[24], acceleration[24];
double var1, var2, var3, var4;
//This is the pointer declaration for opening a file
FILE * fp = fopen("rocket.txt", "r");
int i = 0;
while(fscanf(fp,"%g %f %f %f", &var1, &var2, &var3, &var4) > 0){
time[i] = var1;
altitude[i] = var2;
velocity[i] = var3;
acceleration[i] = var4;
printf("Time: %f \n", &time[i]);
i++;
}
printf("Time: %f", &time[0]);
fclose(fp);
return(0);
}
Próbowałem wielu kombinacji %f, %g, %d
spróbować wydrukować wynik, ale nigdy nie może dostać słusznie.
Jeśli ktoś może wskazać mi właściwy kierunek, bardzo to doceniam.
Nie użyj 'fscanf()' do parsowania ciągów. –