apl/APL1.2/3.Fichier/source/Challenger.c
unknown d9949b5cb0 a
2022-01-14 06:54:18 +01:00

86 lines
2.5 KiB
C

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char* argv[]){
FILE* fluxFichierTopL;
fluxFichierTopL = fopen("top10", "r");//on affecte le fichier a notre variable
if(fluxFichierTopL){
typedef struct enregistrement{
int score;
char sigle[3];
} joueur; //structure d'un joueur
int compteur=0,ajout=0;
joueur hof[10];
joueur nouveauHof[10];
joueur entrant;
entrant.score = strtol(argv[1],NULL,10);
for(compteur=0;compteur<10;compteur++){ //on lit les valeur des 10 joueur du hof et on les affecte au variable correspondantes
fread(&hof[compteur].score,sizeof(int),1,fluxFichierTopL);
fread(&hof[compteur].sigle,sizeof(char),3,fluxFichierTopL);
}
printf("on a tout lu\n");
for(compteur=0;compteur<10;compteur++){ //on affiche les valeurs lu precedemment
printf("%08d %s \n",hof[compteur].score, hof[compteur].sigle);
}
for(compteur=0;compteur<10;compteur++){
if(hof[compteur].score<entrant.score && ajout!=1){ //si on le nouveau score est superieur a un ancien et qu'on a deja inserer le nouveau joueur
nouveauHof[compteur].score=entrant.score;
nouveauHof[compteur].sigle[0]=argv[2][0];
nouveauHof[compteur].sigle[1]=argv[2][1];
nouveauHof[compteur].sigle[2]=argv[2][2];
ajout=1;
} else{
if(ajout==1){ //si on a deja inserer le nouveau jour on prendra les valeurs des joueur decaler de 1 rang afin de ne pas remplacer le joueur battu mais de le placer derriere le nouveau
nouveauHof[compteur]=hof[compteur-1];
}else nouveauHof[compteur]=hof[compteur]; //sinon on va juste affecter le meme joueur a la meme place
}
}
printf("NOUVELLE LISTE\n");
for(compteur=0;compteur<10;compteur++)
{
printf("%08d %s \n",nouveauHof[compteur].score, nouveauHof[compteur].sigle); //on affiche la nouvelle liste
}
fclose(fluxFichierTopL);//on ferme le flux de lecture
FILE* ecriture;
ecriture=fopen("top10","w");//on ouvre le flux d'ecriture en supprimant les anciennes données
for(compteur=0;compteur<10;compteur++){ //on insere la nouvelle liste dans le fichier
fwrite(&nouveauHof[compteur].score,sizeof(int),1,ecriture);
fwrite(&nouveauHof[compteur].sigle,sizeof(char),3,ecriture);
}
fclose(ecriture);//on ferme le flux de lecture
}
return EXIT_SUCCESS;
}
/*FAUT PAS OUVRIR DEUX FOIS LE MEME FICHIER EN MEME TEMPS, TU LOUVRE PUIS TU LE FERME PUIS TU LE REOUVRE
*/