Чтение городов и их координат из файла и вычисление их расстояния до точки (lat1; lat2) Я объединил fgets с strtok следующим образом:
const char sep[]=";";
char data[99];
char *token;
int a=0;
double x1,x2,y1,y2,xx,yy,d;
FILE * f=fopen("miasta.txt", "r");
while(fgets(data,sizeof(data),f))
{
token=strtok(data,sep);
while(token!=NULL)
{
switch (a) {
case 0: printf(token); break;
case 1: x1=atoi(token); break;
case 2: x2=atoi(token); break;
case 3: y1=atoi(token); break;
case 4: y2=atoi(token); break;
}
if (a==4) {
xx=x1+(x2/60);
yy=y1+(y2/60);
d=distance(lat1,lat2,xx,yy);
printf(": %fkm\n",d);
a=0;
} else a++;
token=strtok(NULL,sep);
}
}
fclose(f);
Я получаю такой вывод, который отображает только каждый четвертый или пятый город правильно вместе с некоторыми случайными числами, вероятно, из памяти
Adamow(siedleckie): 309.497030km
: 4938.205291km
36: 3837.944678km
50: 5444.875905km
59: 5706.694715km
18: 2604.334104km
Aleksandrow Lodzki: 17.040912km
: 2966.025473km
04: 4119.540847km
51: 5465.558650km
20: 5658.932842km
22: 758.127409km
Annopol: 282.801168km
: 2260.260604km
51: 4206.333008km
52: 5364.594058km
26: 5665.585238km
15: 5109.704188km
Baborow: 238.291577km
: 4452.965697km
42: 3970.852437km
50: 5573.425585km
39: 5811.661294km
22: 3244.163706km
Я действительно понятия не имею, что происходит ... Почему сохраненные данные повреждаются, если они были сохранены в независимой переменной? Я где-то видел использование strdup, но я не смог его правильно реализовать, я не думаю, что понимаю это.