Действительно странная проблема с fscanf. Кажется, он не может найти файл. Heres код:c - ошибка сегментации fscanf
char obs_file[255];
FILE *obs_fp;
strcpy(obs_file, "/aber/dap/cetaceans/data/observers_1.txt");
obs_fp = fopen(obs_file, "r");
date_time t;
fscanf(obs_fp, "%d %d %d %d %d %d\n", &t.day, &t.mth, &t.yr, &t.hrs, &t.mns, &t.scs); //This line runs fine
obs_head.obs->time = t;
printf("%d %d %d %d %d %d\n", t.day, t.mth, t.yr, t.hrs, t.mns, t.scs);
while(feof(obs_fp) == 0) {
char id[5];
char a[7];
char b[7];
location loc;
double lng = 0.0, lat = 0.0;
fscanf(obs_fp, "%s %lf %lf", id, &lat, &lng); //Seg fault here on first run of loop
loc.lat = lat;
loc.lng = lng;
add_obs_node(make_obs_node(id, loc, t));
}
файла для чтения:
05 11 2014 14 53 00
AB01 52.408 -4.217
Похоже, что указатель файла изменилось где-то заявление, в то время, я бы понял, если бы я читал на конец файла, но он терпит неудачу, пока есть определенные линии. Кроме того, я знаю, что я открываю файл правильно, так как первый fscanf работает нормально.
Любые идеи?
Где произносится 'id'? Он выделен? – MahlerFive
1) Проверить результат 'fscanf (obs_fp,"% d% d% d% d% d% d \ n "...' 2) не использовать 'while (feof (obs_fp) ... fscanf (obs_fp, "% s% lf% lf" ', используйте' while (fscanf (obs_fp, "% 4s% lf% lf", id, & lat, & lng) == 3) {'. – chux
id объявлен' char id [5] 'на строке ниже' while'. –