boninou
Messages postés59Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention16 mai 2012
-
20 juin 2007 à 23:04
boninou
Messages postés59Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention16 mai 2012
-
20 juin 2007 à 23:42
Bonjour,
Je dois développer un bout de code qui me permette de créer et de remplir un fichier "candidats.dat" qui contient des structures de type candidat.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 juin 2007 à 23:15
Candidat cdd;
Remplir champs du candidat, puis
fwrite(&cdd, sizeof(Candidat), 1, file);
fread du meme genre mais penser à ajouter ensuite:
prenom[24] = 0;
nom[24] = 0;
parti[9] = 0;
sait-on jamais que le fichier serait abimé, évitera plantage.
Mais maintenant le vrai pb c'est que j'ai besoin d'utiliser ça dans une appli. Lorsque je met le meme code de lecture dans ma procédure de mon appli les valeurs affichées n'ont aucun sens !!!
//Procédure qui permet de patienter
void wait()
{
char c;
fflush(stdin);
printf("Appuyer sur une touche pour continuer !");
scanf("%c",&c);
}
//Procédure qui lance le questionnaire
void lancer(int reponses[])
{
clrscr();
FILE *q;
FILE *s;
char ch[255];
int i=0;
int max;
q=fopen("questions.txt","r"); //On ouvre le fichier questions.txt en mode lecture
s=fopen("saverep.dat","ab"); //On ouvre le fichier saverep.dat en mode création et écriture
fseek(q,0,SEEK_SET);
while(!feof(q)) //Tant qu'on n'est pas à la fin du fichier
{
clrscr();
fflush(stdin);
fgets(ch,255,q); //On recupere la question
gotoxy(9,5);printf("%s",ch); //On l'affiche
gotoxy(9,7);printf("1. Pour");
gotoxy(35,7);printf("3. Plutot pour");
gotoxy(9,8);printf("2. Contre");
gotoxy(35,8);printf("4. Plutot contre");
gotoxy(9,10);scanf("%d",&reponses[i]); //On enregistre la réponse
i++;
}
fseek(s,0,SEEK_END);
fwrite(reponses,sizeof(int),11,s);
fclose(q);
fclose(s);
}
//Procédure qui compare les réponses aux réponses des candidats
int compare(int reponses[], int comp[])
{
FILE *pf;
int i,j=0;
pf=fopen("candidats.dat","rb");
fseek(pf,0,SEEK_SET);
while(j<2)
{
/*void affiche(max)
{
struct Candidat c[];
FILE *r;
r=fopen("candidats.dat","rb"); //On ouvre le fichier en mode lecture
fseek(r,max*sizeof(struct Candidat),SEEK_SET);
fread(&c,sizeof(struct Candidat),1,r);
printf("Le Gagnant est : %s %s (%s)\n",c.prenom,c.nom,c.parti);
}*/
int main()
{
int choix,retour;
int rep[11];
int comp[2];
int i, vainqueur;
for(i=0;i<11;i++)
{
rep[i]=0;
}
do
{
clrscr();
gotoxy(9,5);
printf("De quel candidat a la presidentielle etes-vous le plus proche ?");
gotoxy(20,10);
printf("1 ... Lancer le questionnaire");
gotoxy(20,12);
printf("2 ... Voir les reponses des candidats");
gotoxy(20,14);
printf("3 ... Statistiques");
gotoxy(20,16);
printf("4 ... Quitter");
gotoxy(20,18);
scanf("%d",&choix);
switch(choix)
{
case 1:
lancer(rep);
vainqueur=compare(rep,comp);
//printf("%d\n",comp[0]);
//printf("%d\n",comp[1]);
// printf("%d",vainqueur);
wait();
break;
case 2:
break;
case 3:
break;
}
}
while(choix!=4);
}
ne pas tenir compte de ce qui est entre /* */ je fais des test c'est pour ça.
Désolé pour tout ce code mais c'est nécessaire pour que tu cernes mon pb.
Merci de prendre le temps de me lire et de me répondre.
Je bloque sur ce probleme depuis 2 jours!!!
C'est mon projet de fin d'année....