1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| #include <stdlib.h>
#include <stdio.h>
#include <string.h>
/** ******************************************* **/
/** structure definissant jour, heure et action **/
/** ******************************************* **/
typedef struct action {
char action[3] ;
char lib[10] ;
struct action * suiv ;
} action_t;
/** ******************************************* **/
/** structure definissant l'annee et la semaine **/
/** ******************************************* **/
typedef struct annee {
char anneesemaine[6] ;
action_t * action ;
struct annee * suiv ;
} annee_t;
/** ******************************************* **/
/** initialisation des variables globales **/
/** ******************************************* **/
annee_t * premierniveau = NULL ;
action_t * secondniveau = NULL ;
/** ******************************************** **/
/** fonction gerant les pointeurs **/
/** deplace les pointeurs de tete dans la
/** fonction insere
/**
/** -endroit: indique quel pointeur changer **/
/** ******************************************** **/
/*
void pointeur(annee_t ** prec, action_t ** preca, annee_t * nouv, action_t * nouva, int endroit)
{
if (endroit == 1)
{
* prec = nouv;
preca = &nouv -> action;
}
else
{
*/
/** ******************************************** **/
/** fonction gérant les deux structures **/
/** - entree: nom fichier **/
/** - sortie: rien **/
/** ******************************************** **/
void insere (annee_t ** tete, char nomfichier[])
{
char annee[6]; /** sauvegarde temporaire annee semaine **/
char action[3]; /** sauvegarde temporaire jour heure **/
char lib[10]; /** sauvegarde temporaire action **/
annee_t ** prec = tete;
action_t ** preca = NULL;
annee_t * nouv = NULL;
action_t * nouva = NULL;
FILE * fichier = NULL;
fichier = fopen(nomfichier,"r");
fscanf(fichier, "%6c", annee);
fscanf(fichier, "%3c", action);
fscanf(fichier, "%10c", lib);
while (feof(fichier) != 1)
{
nouv = (annee_t *) malloc (sizeof(annee_t));
strncpy(annee,nouv -> anneesemaine,6);
* prec = nouv;
preca = &nouv -> action;
while(feof(fichier) != 1 && strncmp(nouv -> anneesemaine, annee, 6) == 0)
{
nouva = (action_t *) malloc (sizeof(action_t));
strncpy(action, nouva -> action, 3);
strncpy(lib, nouva -> lib, 10);
* preca = nouva;
fscanf(fichier, "%6c", annee);
fscanf(fichier, "%3c", action);
fscanf(fichier, "%10c", lib);
}
}
fclose(fichier);
}
int main()
{
char nomfichier[64];
printf("entrer le nom du fichier\n");
scanf("%s", nomfichier);
premierniveau = (annee_t *) malloc (sizeof(annee_t));
insere(&premierniveau, nomfichier);
return 0;
} |
Partager