sscanf не определяет правильные номера - PullRequest
0 голосов
/ 17 марта 2012

Мне трудно использовать sscanf для сканирования часов и минут из списка.Ниже приведен небольшой фрагмент списка.

1704 86 2:30p 5:50p Daily
1711 17 10:40a 2:15p 5
1712 86 3:10p 6:30p 1
1731 48 6:25a 9:30a 156
1732 100 10:15a 1:30p Daily
1733 6 2:15p 3:39p Daily

Я пробовал это, но это продолжает вызывать ошибку сегментации. (Я помещаю эту информацию в структуры).

 for(i=0;i<check_enter;i++){
    sscanf(all_flights[i],
    "%d %d %d:%d%c %d:%d%c %s",
    &all_flights_divid[i].flight_number,
    &all_flights_divid[i].route_id,
    &all_flights_divid[i].departure_time_hour,
    &all_flights_divid[i].departure_time_minute,
    &all_flights_divid[i].departure_time_format,
    &all_flights_divid[i].arrival_time_minute,
    &all_flights_divid[i].arrival_time_minute,
    &all_flights_divid[i].arrival_time_format,
    &all_flights_divid[i].frequency);

    printf("%d ",all_flights_divid[i].flight_number);
    printf("%d ",all_flights_divid[i].route_id);
    printf("%d ",all_flights_divid[i].departure_time_hour);
    printf("%d ",all_flights_divid[i].departure_time_minute);
    printf("%c ",all_flights_divid[i].departure_time_format);
    printf("%d ",all_flights_divid[i].arrival_time_hour);
    printf("%d ",all_flights_divid[i].arrival_time_minute);
    printf("%c ",all_flights_divid[i].arrival_time_format);
    printf("%s\n",all_flights_divid[i].frequency);
  }

Вот как я это объявил.

struct all_flights{
  int flight_number;
  int route_id;
  int departure_time_hour;
  int departure_time_minute;
  char departure_time_format;
  int arrival_time_hour;
  int arrival_time_minute;
  char arrival_time_format;
  char frequency[10];
};
struct all_flights all_flights_divid[3000];

Вот результаты, которые я получаю

1704 86 2 30 p 0 50 p Daily
1711 17 10 40 a 0 15 p 5
1712 86 3 10 p 0 30 p 1
1731 48 6 25 a 0 30 a 156
1732 100 10 15 a 0 30 p Daily
1733 6 2 15 p 0 39 p Daily

Ответы [ 2 ]

2 голосов
/ 17 марта 2012

Большинство результатов, кажется, в порядке, за исключением первого поля.

Теперь, если вы проверите свой код ..

&all_flights_divid[1]

исправить с помощью

&all_flights_divid[i]
2 голосов
/ 17 марта 2012

Маленькая ошибка, может быть проблема:

это:

&all_flights_divid[1].flight_number,

должно быть:

&all_flights_divid[i].flight_number,
//                 ^

Edit:

Кроме того, вы читаете arrival_time_minute дважды, а не читаете arrival_time_hour вообще. Исправьте это, и все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...