Grosse panique!

cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004 - 17 avril 2004 à 10:58
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 17 avril 2004 à 15:04
bonjour, c'est encore moi, je n'arrive decidement pas a trouver pourquoi mon programme n'enregistre pas dans les fichiers, c'est la grosse panique, desole mon programme est long, mais j'ai vraiment besoin d'aide merci.

#include<conio.h>
#include<stdio.h>
#include
#include<string.h>
#define max 19
#define max2 51

/* Prototypes */

void nouvellesfamilles();
void approvisionnement();
void chequesemis();
void solde();
void releve();
void chargement();
void enregistrement();
void depart();
void initialiser();

/* Nom des fichiers */

FILE * familles;
FILE * cheques;

/* Variables */

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

Tenrfamilles Tfamilles[20];
int Tcheques[max2][max];
int bungalow[20];

int i,enr,j ;
char res;

void main()
{ j=0;
// chargement();
initialiser();
int choix;
do
{
cout<<"\n Gestion des comptes cheques club.";
cout<<"\n 1- saisir la liste des nouvelles familles.";
cout<<"\n 2- saisir un approvisionnement de compte." ;
cout<<"\n 3- Saisir les cheques emis de la journee.";
cout<<"\n 4- lister les familles dont le solde est negatif." ;
cout<<"\n 5- lister le releve de compte d'une famille" ;
cout<<"\n 6- sauvegarder les donnees sur le disque.";
cout<<"\n 7- enregistrer les departs";
cout<<"\n 0 quitter le programme." ;
cout<<"\n votre choix ?";
cin>>choix;
switch(choix)
{case 1:nouvellesfamilles();
break;
case 2:approvisionnement();
break;
case 3:chequesemis();
break;
case 4:solde();
break;
case 5:releve();
break;
case 6:enregistrement();
break;
case 7: depart();
break;
}
} while(choix!=0);
if (enr==0)
{
cout<<"\n vous n'avez pas enregistre vos modifications,souhaitez vous le faire?(O/N)";
cin>>res;
if(res==0)
{
enregistrement();
}
cout<<"\n au revoir";
}
getch();
}

/* option 1*/
void nouvellesfamilles()
{
int nb;
char rep;
rep='o';
nb=1;
i=0;
while( rep=='o')
{
/** on verifie que le bungalow est vide **/

while(i==1)
{ cout<<" rentre dans la boucle";
nb++;
if(Tfamilles[nb].nom == " ")
{
i=1;
}
}


if(nb>=max)
{
cout<<"\n le village vacances est complet, vous ne pouvez plus rajouter de famille.";
cout<<"\n ";
rep='n';
}
else
{
cout<< "\n bungalow no "<< nb;
cout<<"\n entrer le nom:";
cin>>Tfamilles[nb].nom;
cout<<"\n entrer le nombre de personnes:";
cin>>Tfamilles[nb].nbpers;
nb=nb++;
cout<<"\n voulez vous entrer une autre famille?(o/n)" ;
cin>> rep;
}
}
enr=0 ;
}
/* Option 2*/
void approvisionnement()
{int mont,i,r;
char rep[20];
char res,res2;
do
{
i=1;
do
{
cout<<"\n entrer le nom:";
cin>>rep;
do
{ if (strcmp(Tfamilles[i].nom, rep)==0)
{
do
{
cout<<" bungalow numero "<>mont;
cout<<"\n etes vous sur du montant?(O/N):";
cin>>res;
}
while ( res=='n');
}
else
{ cout<< "\n ce nom ne correspond a aucun bungalow." ;
}
i=i+1;
}
while(strcmp(Tfamilles[i].nom, rep)==0 && i<=max);
}
while (strcmp(Tfamilles[i].nom, rep)==1);
Tfamilles[i-1].appro=Tfamilles[i-1].appro+ mont;
cout<<"voulez vous entrer un autre approvisionnement?(O/N):";
cin>> res2;
}while(res2=='o');
enr=0 ;
cout<< Tfamilles[i-1].appro ;
}

/* Option 3 */
void chequesemis()
{
i=1;
j=0;
cout<<Tfamilles[i].appro ;
cout<<"\n lorsque la saisie est terminee ,taper 0 dans le no de bungalow";
do
{
cout<<"\n entrer le no de bungalow:";
cin>>i;
// verification des cheques existants//
do
{
j++;
cout<<"\n ordre numéro:"<<j;
cout<<"\n sommes: "<<Tcheques[i][j];
}
while(Tcheques[i][j]!=0);
if(i!=0)
{
cout<<"\n cheque no: ";
cout<<j;
cout<<"\n entrer le montant du cheque:";
cin>>Tcheques[i][j];
Tfamilles[i].appro= Tfamilles[i].appro -Tcheques[i][j];
cout<< Tfamilles[i].appro ;
}
}
while ( i!=0);
enr=0;

}

/* Option 4 */
void solde()
{
int i,pos;
i=1;
pos=1;
do
{

if(Tfamilles[i].appro<0)
{
cout<<"\n bungalow no"<<Tfamilles[i].no;
cout<<"\n nom:"<<Tfamilles[i].nom;
cout<<"\n approvisionnement:"<<Tfamilles[i].appro;
pos=0;
}
i=i+1;
} while(i!=max);
enr=0;
if(pos==1)
{
cout<<"\n Aucun bingalow n'a le solde negatif";
}
}

/* Option 5 */
void releve()
{
i=0;
int i,j;
cout<<"\n entrer le no du bungalow";
cin>>i;
j=0;
while (j<=max2)
{
if(Tcheques[i][j]!=0)
{
cout<<"\n no du cheque:"<> nb;
// Tfamilles[nb].nom=="";
Tfamilles[nb].appro=0;
Tfamilles[nb].nbpers=0;
for(i=0;i<=max2;i=i+1)
{
for (j=0;j<=max2;j=j+1)
{
Tcheques[i][j]=0;
}
}
}

/* Chargement */
void chargement()
{
int i,j;
i=0;
familles=fopen("familles.dat","r");
while (!feof (familles))
{
fscanf(familles,"%d %s %d %d ",&Tfamilles[i].no,&Tfamilles[i].nom,&Tfamilles[i].nbpers,&Tfamilles[i].appro);
i=i+1;
}
fclose(familles);
cheques=fopen("cheques.dat","r");
while (!feof(cheques))
{
for(i=1;i<=max2;i=i+1)
{for (j=1;j<=max2;j=j+1)
{fscanf(cheques,"%d ",&Tcheques[i][j]);
}
}
}
fclose(cheques);
}

// initialiser//

void initialiser()
{ int i,j;
for(i=0;i<=max2;i=i+1)
{
for (j=0;j<=max2;j=j+1)
{
Tcheques[i][j]=0;
}
}
for(i=1;i<=max;i=i+1)
{
Tfamilles[i].no=i;
//Tfamilles[i].nom=" ";
Tfamilles[i].nbpers=0;
Tfamilles[i].appro=0;

}
}

19 réponses

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 avril 2004 à 11:18
Tu as fais du pas-à-pas ?,Est-ce-que tu as essaye de faire juste un fprintf normal qui ne soit pas dans un boucle et juste apres avoir fais ton fopen, d'ailleurs il serait preferable de l'ouvrir en "wt" pour specifie que c'est du texte (et non en "w"). Essaye d'isole en faisant un exemple simple :

FILE *f;
f = fopen("familles.dat","wt");
fprintf(f,"teste, pi=%lf",3.1415926535);
fclose(f);
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 avril 2004 à 11:46
pourquoi tu fais à moitié avec des fonctions C et à moitié avec les flux du C++?
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
17 avril 2004 à 12:02
honnetement on m'a appris le c et le c++ en meme temps et du coup je confond les deux.
pour le fichier f j'ai essaye et il reste quand meme vide.je comprend pas.
0
cs_pheno Messages postés 141 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 23 mars 2005 1
17 avril 2004 à 12:43
t as essaye de faire ce que JCDjcd as dit??

tu peux rajouter des fflush(familles);
pour enregistrer dans le fichier ce que tu as dans le tampon

Chevalier Pheno Starboard, membre de la Freeman-Corp
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
17 avril 2004 à 13:59
oui oui j'ai essaye mais ça reste vide
, j'ai aussi ajoute le fflush(familles) mais ça ne marche pas non plus.
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
17 avril 2004 à 14:03
alors dans ce cas la c'est tres simple :
tu fais un nouveau projet et tu mais un main tres simple, tu fais fopen,fprintf,fclose, et c'est tout, tu appelle que ces trois fonctions, ca marche toujours pas ?
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
17 avril 2004 à 14:07
j'ia dejà essaye, mais ça a pas marche, je vais ressayer pour voir, je vais envoyer ce que j'aurai fais, je dois me gourrer quelque part
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
17 avril 2004 à 14:12
voilà le programme exact juste pour enregistrer

#include<conio.h>
#include<stdio.h>
#include
#include<string.h>

FILE *f;

void main()
{
f = fopen("familles.dat","wt");
fflush(f);
fprintf(f,"teste, pi=%lf",3.1415926535);
fclose(f);
cout<<"rentre dans le programme";

}
et ça ne marche pas, il y a rien dans le fichier
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 avril 2004 à 14:32
la tu doit avoir un compilateur bizarre car en ce qui me concerne ca marche tres bien
Tu es sur que tu regarde dans le bon fichier?
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
17 avril 2004 à 14:37
oui je suis sure

je travaille avec turbo c++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 avril 2004 à 14:40
tu pourrais au moins utiliser gcc qui est gratuit parce que visiblement turbo c++ a quelques petits soucis
0
cs_oceane67 Messages postés 50 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 21 juin 2004
17 avril 2004 à 14:42
j'ai essaye avec visual c++ et ça marche!!
je me prend la tete depuis des semaines alors que ça vient de l'editeur!merci beaucoup
le soulagement!
bisous et encore merci
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 avril 2004 à 14:46
de tt facon un vrai compilo ne compile pas ca

#include<stdio.h>

main()
{

FILE *f = fopen("familles.dat","wt");
fprintf(f,"teste, pi=%lf",3.1415926535);

fclose(f);

return 0;
}


ton fflush ne sert a rien, surtout avant le fprintf
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 avril 2004 à 14:50
ce n'est pas parce que ca ne sert à rien qu'il ne va pas le compiler, ou alors c'est un très bon compilateur
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 avril 2004 à 14:52
tu sais je disais juste ca pour le cout <<
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 avril 2004 à 14:54
ah oui, en fait elle avait oublié le std::, c'est ca?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 avril 2004 à 14:57
non, en fait cout << c'est du c++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 avril 2004 à 14:59
bah oui, mais on peut très bien utiliser sprintf dans un projet en c++
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 avril 2004 à 15:04
oui mais la c'est du c, et pour le c++ oui on peut se servir de fonction c vu que les 2 languages sont compatible mais n'oublie pas qu'il est standardiser et que certain compilo ca passe pas sur
0
Rejoignez-nous