86 lines
2.5 KiB
C
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
|
|
|
|
*/ |