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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
| #include <stdio.h>
#include <stdlib.h>
#define ACCES_JEUX "file/jeux.dat"
#define ACCES_JOUEURS "joueurs.dat"
#define ACCES_PARTIES "file/parties.dat"
/* Longueur des champs */
#define LG_NOM 25
#define LG_PRENOM 25
#define LG_ADRESSE 35
#define LG_CP 5
#define LG_VILLE 25
#define LG_PAYS 20
#define LG_MAIL 50
#define LG_TEL 15
#define MAX_JOUEURS 30
#define MAX_JEUX 50
struct Joueurs {
long IdJoueur;
char Nom[LG_NOM];
char Prenom[LG_PRENOM];
// DATE DateNaissance;
char Adresse[LG_ADRESSE];
char CodePostal[LG_CP];
char Ville[LG_VILLE];
char Pays[LG_PAYS];
char Telephone[LG_TEL];
char Email[LG_MAIL];
int position;
short suivant;
}; typedef struct Joueurs JOUEUR;
int nombre_joueurs(FILE*, JOUEUR*);
void Bidonnage_joueurs(JOUEUR*);
void Creation_joueurs(FILE*, JOUEUR*);
//void Init_pto(FILE *fpJoueur, JOUEUR *joueur, JOUEUR *pto, JOUEUR *ptl);
void ajout_Joueurs(JOUEUR*, FILE *, short, short);
int main() {
JOUEUR joueur;
FILE *fpJoueur;
short PTO, PTL, i;
// Creation_joueurs(fpJoueur, joueur);
fpJoueur = fopen(ACCES_JOUEURS, "rb");
if (fpJoueur == (FILE *) NULL){
fpJoueur = fopen(ACCES_JOUEURS, "wb");
if(fpJoueur == (FILE *) NULL){
printf("Erreur lors de la creation du fichier!!");
} else {
PTO = -1;
PTL = 0;
fwrite(&PTO, sizeof(short),1,fpJoueur);
fwrite(&PTL, sizeof(short), 1, fpJoueur);
}
}
fclose(fpJoueur);
ajout_Joueurs(&joueur, fpJoueur, &PTO, &PTL);
return 0;
}
void ajout_Joueurs(JOUEUR *joueur, FILE *fpJoueur, short PTO, short PTL){
int taille;
int temp;
int i;
JOUEUR ptemp;
fpJoueur = fopen(ACCES_JOUEURS, "r+b");
fread(&PTO, sizeof(short), 1, fpJoueur);
fread(&PTL, sizeof(short), 1, fpJoueur);
if(PTL == 9){
printf("Plus de places disponibles!");
fclose(fpJoueur);
} else {
printf("Ajout\n");
printf("Nom : ");
scanf("%s", &joueur->Nom);
if(PTO == -1) {
fseek(fpJoueur, 2*sizeof(short), SEEK_SET);
joueur->suivant = PTO;
fwrite(joueur,sizeof(JOUEUR), 1, fpJoueur);
PTO = PTL;
PTL++;
} else {
rewind(fpJoueur);
fseek(fpJoueur, 2*sizeof(short) + sizeof(JOUEUR)*PTL, SEEK_SET);
fwrite(joueur, sizeof(JOUEUR), 1, fpJoueur);
rewind(fpJoueur);
fseek(fpJoueur, 2*sizeof(short), SEEK_SET);
joueur->suivant = PTL+1;
printf("Joueur suivant = %hd", PTL);
/*fread(&ptemp, sizeof(JOUEUR), 1, fpJoueur);
printf("%s", ptemp.Nom);*/
/* for(i = 1; i < PTL+1; i++){
// printf("PTL = %hd \n", PTL+1);
fread(&ptemp, sizeof(JOUEUR), 1, fpJoueur);
printf("Position : %d \n", i);
if(strcmp(ptemp.Nom, joueur->Nom) == 1){
printf("%s est plus grand que %s\n", ptemp.Nom, joueur->Nom);
PTO = i;
joueur->suivant = i;
ptemp.suivant = -1;
printf("%s et %hd\n", ptemp.Nom, ptemp.suivant);
printf("%s et %hd\n", joueur->Nom, joueur->suivant);
// } */
// chaine = ptemp.suivant;
}
/* rewind(fpJoueur);
fseek(fpJoueur, 2*sizeof(short), SEEK_SET);
fread(&precedent, sizeof(JOUEUR), 1, fpJoueur);
printf("%hd", precedent.position);*/
//}
// PTO = PTL;
PTL++;
rewind(fpJoueur);
fwrite(&PTO,sizeof(short),1,fpJoueur);
fwrite(&PTL, sizeof(short), 1, fpJoueur);
// printf("%hd %hd\n",PTO, PTL);
rewind(fpJoueur);
fseek(fpJoueur, 2*sizeof(short), SEEK_SET);
for(i = 0; i < 4; i++) {
fread(joueur, sizeof(JOUEUR), 1, fpJoueur);
printf("Joueur %s", joueur->Nom);
printf("Joueur suivant %s ", joueur->Nom);
fclose(fpJoueur);*/
// fread(joueur, 2*sizeof(short) + sizeof(JOUEUR)*PTO, 1, fpJoueur);
// printf("pos : %hd\n", joueur->suivant);
fclose(fpJoueur);
/* fpJoueur = fopen(ACCES_JOUEURS, "rb");
fseek(fpJoueur, 2*sizeof(short), SEEK_SET);
taille = nombre_joueurs(fpJoueur, joueur);
for(i = 0; i < taille; i++){
fread(joueur, sizeof(JOUEUR), 1, fpJoueur);
printf("Nom %d : %s\n", i, joueur->Nom);
printf("Son suivant : %hd\n", joueur->suivant);
}
}*/
}
}
int nombre_joueurs(FILE *pf, JOUEUR *joueur) {
int taille;
pf = fopen(ACCES_JOUEURS, "rb");
fseek(pf, 0L, SEEK_END);
taille = ftell(pf) / sizeof(*joueur);
return taille;
} |
Partager