cs_oceane67
Messages postés50Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention21 juin 2004
-
29 mars 2004 à 08:17
cs_oceane67
Messages postés50Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention21 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
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 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.
cs_oceane67
Messages postés50Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention21 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
cs_oceane67
Messages postés50Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention21 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.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 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);
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_oceane67
Messages postés50Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention21 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