begin process at 2012 02 12 23:47:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Créer un fichier de structures


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Créer un fichier de structures

mercredi 20 juin 2007 à 23:04:52 | Créer un fichier de structures

boninou

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.

struct Candidat
{
    char prenom[25];
    char nom[25];
    char parti[10];
    int rep[11];
};

Pouvez vous m'aider svp.
mercredi 20 juin 2007 à 23:15:52 | Re : Créer un fichier de structures

BruNews

Administrateur CodeS-SourceS
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.

ciao...
BruNews, MVP VC++
mercredi 20 juin 2007 à 23:42:14 | Re : Créer un fichier de structures

boninou

Merci pour ta réponse !
Voila se que j'ai fait :

Ecriture :

#include <stdlib.h>
#include <stdio.h>
struct Candidat
{
    char prenom[25];
    char nom[25];
    char parti[10];
    int rep[11];
};
int main()
{
    int j,i=0;
    struct Candidat cp;
    FILE *pf;
    pf=fopen("candidats.dat","ab");
    while(i<2)
    {
        printf("Veuillez saisir les infos \n");
        printf("le prenom \n");
        scanf("%s",&cp.prenom);
        printf("le nom \n");
        scanf("%s",&cp.nom);
        printf("le parti \n");
        scanf("%s",&cp.parti);

        for(j=0;j<11;j++)
        {
           printf("la reponse %d \n",j+1);
           scanf("%d",&cp.rep[j]);
        }

        fseek(pf,0,SEEK_END);
        fwrite(&cp,sizeof(struct Candidat),1,pf);
        i++;
    }
        fclose(pf);
}

J'ajoute don 2 structures candidat dans mon fichier.
Ensuite lecture :

#include <stdio.h>
#include <stdlib.h>
struct Candidat
{
    char prenom[25];
    char nom[25];
    char parti[10];
    int rep[11];
};
int main()
{
    FILE *pf;
    int i,j=0;
    pf=fopen("candidats.dat","rb");
    fseek(pf,0,SEEK_SET);
    while(j<2)
    {
        struct Candidat c;
        fread(&c,sizeof(struct Candidat),1,pf);
        printf("%s\n",c.nom);
        printf("%s\n",c.prenom);
        printf("%s\n",c.parti);

        for(i=0;i<11;i++)
        {
            printf("%d",c.rep[i]);
        }
        j++;
        printf("\n");
    }
    fclose(pf);
}

Affichage de mes 2 structures nickel !

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 !!!

Voici mon programme principal :

#include <stdio.h>
#include <stdlib.h>
#include <conio2.h>
#include <mem.h>

//Structure Candidat
struct Candidat
{
    char prenom[25];
    char nom[25];
    char parti[20];
    int rep[11];
};

//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)
    {


        struct Candidat c;
        fread(&c,sizeof(struct Candidat),1,pf);
        printf("%s\n",c.nom);
        printf("%s\n",c.prenom);
        printf("%s\n",c.parti);

        for(i=0;i<11;i++)
        {
            printf("%d",c.rep[i]);
        }
        j++;
        printf("\n");
    }
    fclose(pf);

    /*int i=0,j,k,max=0,z;
    struct Candidat c[2];
    FILE *r;
    for(z=0;z<2;z++)
    {
        comp[z]=0;
    }
    r=fopen("candidats.dat","rb"); //On ouvre le fichier en mode lecture
    fseek(r,0,SEEK_SET);
    fread(c,sizeof(struct Candidat),2,r);
    while(i<2) //Tant qu'on n'a pas comparer tous les candidats
    {
        for(j=0;j<11;j++)
        {
           printf("%d",c[i].rep[j]);
            if(c[i].rep[j]==reponses[j])
            {
                 comp[i]=comp[i]+1;
            }
        }
        if(comp[i]>comp[max])
        {
            max=i;
        }
        else if(comp[i]==comp[max] && max!=0)
        {
            //affinage
        }
       i=i+1;
       printf("\n");
    }
    fclose(r);
    return(max);*/
}

/*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....

Merci beaucoup


Cette discussion est classée dans : fichier, créer, char, structures, candidat


Répondre à ce message

Sujets en rapport avec ce message

tableau de pointeurs vers des structures [ par Kurpeus1 ] Bonjour et joyeuses fêtes a tous.Je voudrais créer un tableau de pointeurs vers des structures (de taille identiques) mais je ne sais pas trop comment Fichier de structures [ par boninou ] Bonjour,Voila mon petit souci : J'ai un fichier de structures qui contient des structures Candidat :struct Candidat{    char prenom[25];    char nom[2 listes chainées [ par tony_77 ] bonjour,J'ai un projet à faire en C++, je suis débutant.J'ai choisi d'utiliser une liste chainée que je sauvegarde ds un fichier .txt.Il faut donc que lire une ligne dans un fichier txt et extraire les champs entre ; [ par drcmomo ] Bonjour!!je vous en prie aidez moi svp!!j'ecris ce code qui permet de lire un fichier txt, apres l'ouverture je dois lire une ligne et extraire les do lecture etenvoi de fichier binaire [ par mitali ] Bonjour tt l mondej'ai un souci au niveau d'une fonction qui me permet d'envoyer un fichier de type tar.gz vers un serveur,por cela j'utilise la fonct Ouverture de fichier [ par LaTatadu91 ] Bonjour,Voila je cherche a créer un fichier et je sais que pour cela il y a deux moyens de  le faire avec CreatFile ou fOpen.Ma question est : quel es Copier des images sélectionnés par une liste [ par kididouille ] Bonjour, j'ai un pb, je dois réaliser un programme qui copie des images d'un dossier vers un autre. Les images choisies sont issues d'une liste en txt char ** [ par PADYVEN ] Si quelqu'un peut jeter un oeil sur ce code et le critiquer merci(constructive les critiques :-))j'ai un probleme tout betece programme lit un fichier création d'1 interface [ par amina08 ] bonjour,j'ai un projet console visuel c++ et je veux créer 1 interface pour ce projetje veux créer un fichier dll puis je l'utilise pour construire mo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales