Thank Matticus and Laserlight to point out my problems and give me some advice. I am really appreciate that. I change the pointer save to an array and change the method of determine end of file. The program run smoothly now. However, I wonder if I want to use pointer, what should I do? I assumed that allocate memory for the pointer mean assign an address for it to point to(fix me if I am wrong).
Hear is the working code
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
fp = fopen ("C:\\rocket1.txt", "r");
float time, altitude, velocity, acceleration, amax;
char save[50];
fgets(save, 95, fp);
while(fgets(save, sizeof(save), fp) != NULL)
{
sscanf(save, "%f %f %f %f", &time, &altitude, &velocity, &acceleration);
printf("%f\n",velocity);
fgets(save, 95, fp);
}
rewind(fp);
fgets(save, 95, fp);
sscanf(save, "%f %f %f %f", &time, &altitude, &velocity, &acceleration);
amax = velocity;
fgets(save, 95, fp);
while(fgets(save, sizeof(save), fp) != NULL)
{
sscanf(save, "%f %f %f %f", &time, &altitude, &velocity, &acceleration);
if(velocity>amax)
{
amax = velocity;
}
fgets(save, 95, fp);
}
printf("%s %f\n", "the maximum is", amax);
fclose(fp);
printf("%s", "Enter something:");
getchar();
return(0);
}
And here is the file
1.0000000e+01 2.9265380e+03 5.0821200e+02 4.3231640e+01
2.0000000e+01 1.0170240e+04 9.2798610e+02 4.0723180e+01
3.0000000e+01 2.1486260e+04 1.1832420e+03 1.0328000e+01
4.0000000e+01 3.3835080e+04 1.1882285e+03 -9.3307000e+00
5.0000000e+01 4.5250830e+04 1.0899705e+03 -1.0320900e+01
6.0000000e+01 5.5634490e+04 9.8935650e+02 -9.8019000e+00
7.0000000e+01 6.5037960e+04 8.9134700e+02 -9.8000000e+00
8.0000000e+01 7.3461430e+04 7.9334750e+02 -9.7999000e+00
9.0000000e+01 8.0904910e+04 6.9534750e+02 -9.8001000e+00
1.0000000e+02 8.7368380e+04 5.9734700e+02 -9.8000000e+00
1.1000000e+02 9.2851850e+04 4.9934700e+02 -9.8000000e+00
1.2000000e+02 9.7355320e+04 4.0134750e+02 -9.7999000e+00
1.3000000e+02 1.0087880e+05 3.0334400e+02 -9.8008000e+00
1.4000000e+02 1.0342220e+05 2.0534500e+02 -9.7990000e+00
1.5000000e+02 1.0498570e+05 1.3402000e+02 -4.4660000e+00
1.6000000e+02 1.0610260e+05 2.6304000e+02 3.0270000e+01
1.7000000e+02 1.1024650e+05 6.7618500e+02 5.2359000e+01
1.8000000e+02 1.1962630e+05 1.2929950e+03 7.1003000e+01
1.9000000e+02 1.3610640e+05 2.1234700e+03 9.5092000e+01
2.0000000e+02 1.6209570e+05 3.1700000e+03 1.1421400e+02
2.1000000e+02 1.9950640e+05 3.8340050e+03 1.8587000e+01
2.2000000e+02 2.3877580e+05 3.8779450e+03 -9.7990000e+00
2.3000000e+02 2.7706530e+05 3.7799500e+03 -9.8000000e+00
2.4000000e+02 3.1437480e+05 3.6819500e+03 -9.8000000e+00