2012-03-17 11 views
0

sscanfを使用してリストから時間と分をスキャンするのに苦労しています。以下はリストの小さな抜粋です。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

小さなミスを得る結果である、それが問題かもしれません:

この:

&all_flights_divid[1].flight_number, 

は次のようになります。

&all_flights_divid[i].flight_number, 
//    ^

編集:

はまた、あなたが二回arrival_time_minuteを読んで、そして全くarrival_time_hourを読んでいません。それを修正すればOKです。

+0

で固定します。 –

+0

しかし、今私は有線の結果を得ています。到着の時間はまだ0のままです。 –

+0

質問でソースと出力の両方が変更されているため、すべての回答が無効になります。それでも問題が解決しない場合は、元のコードを編集したコードを追加してください。 – MByD

2

ほとんどの結果は、最初のフィールドを除いて問題ないようです。あなたのコードをチェックすると

は今..

&all_flights_divid[1] 

はすごいああ、その1を=)見なかった

&all_flights_divid[i] 
関連する問題