Fichiers

cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004 - 29 mars 2004 à 08:17
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004 - 29 mars 2004 à 10:09
Bonjour tous!
je suis en train de faire un programme avec des fichiers, c'est la premiere fois, et mon code plante, je ne sais pas si ce que j'ais fais est correct(apparement non vu que ça plante)
voilà mon code:
/* Option 6:Enregistrements */
void enregistrement()
{
int i;
familles=fopen("a:familles.dat","w");
for(i=1;i<=max;i=i+1)
{
fprintf(familles,"%s %d %d ",Tfamilles[i].nom,Tfamilles[i].nbpers,Tfamilles[i].appro);
cout<<"rentre dans la boucle familles";
}
cout<<"\n enregistrement terminé";
}

j'ai mis les prototype en debut de programme.
j'ai declare mon fichier aussi au debut:

/* Nom des fichiers */

FILE *familles;

et voilà, les variables gloables a tout le programme:
/* Variables */

typedef struct
{
int no;
char nom[20];
int nbpers;
int appro;
}Tenrfamilles;

Tenrfamilles Tfamilles[20];
j'espere que vous pourrez m'eclaircir et m'aider a me corriger
merci
Oceane

5 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
29 mars 2004 à 09:34
plusieurs petites choses :

- max n'est pas défini dans la fonction enregistrement().
- tu dois fermer les fichiers que tu ouvres : fclose(familles) après avoir tout écrit dedans.
- travailler directement sur la disquette ne me semble pas très pratique, notamment du point de vue de la rapidité et de la sécurité. Ecris plutôt dans un fichier qui se trouve sur ton disque et recopies-le ensuite sur la disquette.
- Verifie que le tableau Tfamilles ne contient pas de champs non affectés avant de les écrire.

Manu
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
29 mars 2004 à 09:42
max est bien defini je l'ai mis au debut

le fichier est bien ferme dans le programme principal, et j'ai modifier ( mais pas ici) pour que le fichier ne soit pas sur la disquette, et ça ne marche pas quand meme.
quand au tableau, je me pose une question, j'ai tfamilles[].no, mais dans l'enregistrement je n'en tiens pas compte, je veux que soit autoincrementer est ce le cas?
merci
elodie
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
29 mars 2004 à 09:48
ça donne ça avec les modifications:
familles=fopen("C:\windows\Bureau\Nouveau dossier\familles.dat","w");
for(i=1;i<=max;i=i+1)
{
fprintf(familles,"%s %d %d ",Tfamilles[i].nom,Tfamilles[i].nbpers,Tfamilles[i].appro);
cout<<"rentre dans la boucle familles";
}
fclose(familles);

et quand j'execute il rentre bien dans la boucle, mais le fichier est vide.
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
29 mars 2004 à 10:02
Une chose est sûre :
no ne s'incrémente pas seul. C'est à toi de le faire à chque fois que tu mets à jour un des enregistrements de ta structure.

Pour voir si ce sont bien les éléments de ton tableau qui sont vides, remplaces :
fprintf(familles,"%s %d %d ",Tfamilles[i].nom,Tfamilles[i].nbpers,Tfamilles[i].appro);

par

fprintf(familles,"%s essai %d essai %d ",Tfamilles[i].nom,Tfamilles[i].nbpers,Tfamilles[i].appro);

Au passage, il me semble que pour utiliser un tableau de structures, tu dois passer par des pointeurs (tableau de 20 pointeurs sur structure Tenrfamilles)

Manu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
29 mars 2004 à 10:09
j'ia mis comme tu me la conseille:
fprintf(familles,"%d essai %s essai %d essai %d ",i,Tfamilles[i].nom,Tfamilles[i].nbpers,Tfamilles[i].appro);

pour qu'il y est tous les champs, ai je le droit de me servir de i comme ça ( qui correspond a Tfamilles[i].no) pour l'auto incrementer.
pour le tableau de structure, j'ai pas bien compris ce que tu m'explique?
merci
elodie
0
Rejoignez-nous