2012-03-17 7 views
0

J'ai du mal à utiliser sscanf pour balayer les heures et les minutes d'une liste. Voici un petit bout de la liste.sscanf ne détecte pas les bons numéros

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 

J'ai essayé cela, mais il continue de me causer une erreur de segmentation (je mets cette information dans les structures).

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); 
    } 

Voici comment je l'ai déclaré.

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]; 

Ce sont les résultats que je reçois

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 

Répondre

2

petite erreur, qui pourrait être le problème:

ceci:

&all_flights_divid[1].flight_number, 

devrait être:

&all_flights_divid[i].flight_number, 
//    ^

Edit:

En outre, vous avez bien lu arrival_time_minute deux fois, et ne pas lire arrival_time_hour du tout. Fixez-le et ça devrait être OK.

+0

Oh wow n'a pas vu que 1 =). –

+0

Mais maintenant, je reçois des résultats filaires. L'heure d'arrivée apparaît toujours comme 0. –

+0

Vous modifiez à la fois la source et la sortie dans la question, ce qui rend toutes les réponses invalides. S'il vous plaît, si vous avez toujours un problème, ajoutez un code édité APRÈS l'original. – MByD

2

La plupart des résultats semblent être bons, à l'exception du premier champ.

Maintenant, si vous vérifiez votre code ..

&all_flights_divid[1] 

fixer avec

&all_flights_divid[i] 
Questions connexes