我正在尝试创建一个struct数组。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TMAX 500
typedef struct InfosTrain InfosTrain;
struct InfosTrain {
char * gareDepart;
char * gareArrivee;
char * heureDepart;
char * heureArrivee;
float Prix;
char * reduction;
};
int main()
{
char *train = NULL, *gDepart, *gArrivee;
char *hDepart, *hArrivee;
size_t bufsize = TMAX;
char *prix, *reduc;
int i=0;
train = (char *)malloc(TMAX);
InfosTrain tabTrains[21];
FILE *f = NULL;
f=fopen("Trains.txt", "r");
if(f == NULL)
{
printf("Erreur ouverture fichier \n");
exit(0);
}
else
{
while(getline(&train,&bufsize , f)!=-1)
{
getline(&train,&bufsize , f);
gDepart = strtok(train, ";");
tabTrains[i].gareDepart = gDepart;
gArrivee= strtok(NULL, ";");
tabTrains[i].gareArrivee = gArrivee;
hDepart= strtok(NULL, ";");
tabTrains[i].heureDepart = hDepart;
hArrivee= strtok(NULL, ";");
tabTrains[i].heureArrivee = hArrivee;
prix= strtok(NULL, ";");
tabTrains[i].Prix = atoi(prix);
reduc= strtok(NULL, ";");
tabTrains[i].reduction = reduc;
i++;
}
for(i=0;i<21;i++)
{
printf("Gare de depart :%s\n",tabTrains[i].gareDepart);
printf("Gare d'Arrivee :%s\n",tabTrains[i].gareArrivee);
printf("Heure de depart :%s\n",tabTrains[i].heureDepart);
printf("Heure d'arrivee :%s\n",tabTrains[i].heureArrivee);
printf("Prix :%.2f\n",tabTrains[i].Prix);
printf("Reduction : %s\n",tabTrains[i].reduction);
}
}
fclose(f);
return 0;
}
Valence;Grenoble;6:15;7:31;17.60;REDUC
Valence;Grenoble;6:45;7:55;17.60;
Valence;Grenoble;7:15;8:32;17.60;
Grenoble;Valence;16:30;17:45;17.60;
Grenoble;Valence;16:55;17:55;17.60;SUPPL
Grenoble;Valence;17:30;18:46;17.60;
Grenoble;Valence;18:30;19:45;17.60;REDUC
Valence;Montelimar;12:30;12:56;9.80;REDUC
Valence;Montelimar;14:10;14:30;9.80;SUPPL
Valence;Montelimar;16:30;16:56;9.80;
Montelimar;Valence;6:30;6:55;9.80;
Montelimar;Valence;7:10;7:30;9.80;SUPPL
Montelimar;Valence;7:30;7:55;9.80;
Montelimar;Valence;8:00;8:25;9.80;
Montelimar;Valence;8:30;8:55;9.80;REDUC
Valence;Paris Gare de Lyon;15:15;17:49;109.50;REDUC
Valence;Paris Gare de Lyon;16:15;19:15;92.00;
Valence;Paris Gare de Lyon;17:15;19:53;92.80;
Paris;Gare de Lyon;7:41;10:11;113.00;REDUC
Paris;Gare de Lyon;10:07;12:19;90.00;
Paris;Gare de Lyon;10:07;13:15;92.20;
输出应为
Gare de depart :Valence
Gare d'arriveeGrenoble
Heure de depart :6:45
Heure d'arrivee :7:55
Prix :17.00
Reduction :
Gare de depart :Grenoble
Gare d'arriveeValence
Heure de depart :16:30
Heure d'arrivee :17:45
Prix :17.00
Reduction :
Gare de depart :Grenoble
Gare d'arriveeValence
Heure de depart :17:30
Heure d'arrivee :18:46
Prix :17.00
Reduction :
Gare de depart :Valence
Gare d'arriveeMontelimar
Heure de depart :12:30
Heure d'arrivee :12:56
Prix :9.00
Reduction : REDUC
等...
但我明白了:
Gare de depart :Valence
Gare d'arriveeGrenoble
Heure de depart :6:45
Heure d'arrivee :7:55
Prix :17.00
Reduction :
Gare de depart :Grenoble
Gare d'arriveeValence
Heure de depart :16:30
Heure d'arrivee :17:45
Prix :17.00
Reduction :
Gare de depart :Grenoble
Gare d'arriveeValence
Heure de depart :17:30
Heure d'arrivee :18:46
Prix :17.00
Reduction :
Gare de depart :Valence
Gare d'arriveeMontelimar
Heure de depart :12:30
Heure d'arrivee :12:56
Prix :9.00
Reduction : REDUC
Gare de depart :Valence
Gare d'arriveeMontelimar
Heure de depart :16:30
Heure d'arrivee :16:56
Prix :9.00
Reduction :
Gare de depart :Montelimar
Gare d'arriveeValence
Heure de depart :7:10
Heure d'arrivee :7:30
Prix :9.00
Reduction : SUPPL
Gare de depart :Montelimar
Gare d'arriveeValence
Heure de depart :8:00
Heure d'arrivee :8:25
Prix :9.00
Reduction :
Gare de depart :Valence
Gare d'arriveeParis Gare de Lyon
Heure de depart :15:15
Heure d'arrivee :17:49
Prix :109.00
Reduction : REDUC
Gare de depart :Valence
Gare d'arriveeParis Gare de Lyon
Heure de depart :17:15
Heure d'arrivee :19:53
Prix :92.00
Reduction :
Gare de depart :Paris
Gare d'arriveeGare de Lyon
Heure de depart :10:07
Heure d'arrivee :12:19
Prix :90.00
Reduction :
Gare de depart :Paris
Gare d'arriveeGare de Lyon
Heure de depart :10:07
Heure d'arrivee :13:15
Prix :92.00
Reduction :
Gare de depart :Paris
Gare d'Arrivee :re de Lyon
Heure de depart :n
Heure d'arrivee :07
Prix :17.00
Reduction : .20
Gare de depart :Paris
Gare d'Arrivee :e de Lyon
Heure de depart :n
Heure d'arrivee :7
Prix :17.00
Reduction : 0
Gare de depart :Paris
Gare d'Arrivee :e de Lyon
Heure de depart :n
Heure d'arrivee :7
Prix :17.00
Reduction : 0
Gare de depart :Paris
Gare d'Arrivee :re de Lyon
Heure de depart :10:07
Heure d'arrivee :13:15
Prix :9.00
Reduction :
Gare de depart :Paris
Gare d'Arrivee :re de Lyon
Heure de depart :10:07
Heure d'arrivee :13:15
Prix :9.00
Reduction :
Gare de depart :Paris
Gare d'Arrivee :de Lyon
Heure de depart :10:07
Heure d'arrivee :
Prix :9.00
Reduction : 20
Gare de depart :Paris
Gare d'Arrivee :de Lyon
Heure de depart :10:07
Heure d'arrivee :
Prix :9.00
Reduction : 20
Gare de depart :Paris
Gare d'Arrivee :re de Lyon
Heure de depart ::15
Heure d'arrivee :.20
Prix :109.00
Reduction :
Gare de depart :Paris
Gare d'Arrivee :re de Lyon
Heure de depart ::15
Heure d'arrivee :.20
Prix :92.00
Reduction :
Gare de depart :Paris
Gare d'Arrivee :Gare de Lyon
Heure de depart :10:07
Heure d'arrivee :13:15
Prix :90.00
Reduction :
Gare de depart :Paris
Gare d'Arrivee :Gare de Lyon
Heure de depart :10:07
Heure d'arrivee :13:15
Prix :92.00
Reduction :
Gare de depart : �`�F
Gare d'Arrivee :��F
Erreur de segmentation (core dumped)
为什么程序会崩溃?