APL1.1
APL1.2
1.Allocation_dynamique
2.Structures
3.Fichier
source
Chainée.c
Challenger
Challenger.c
Image.c
Records
Records.c
image.bin
test
top10
3.Fichiers
Aranger
CM1
CM2
fichier
Débordement.c
Image.c
Maximum.c
Mesure.c
Parenthésage.c
Phases
Phases.c
testAvantCM
APL2.1
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
|
||
|
|
||
|
*/
|