Enregistrer dans un fichier (programmae en c)
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
bjr,,,j'ai réaliser un programme ,,, le probleme c'est que j'arrive pas à bien enregistrer les données dans un fichier (chaque nouveau ajout n'apparait pas , mais le premier s'ecrit à sa place)
voila le code :::::::::::
:::::::::::::::::::::::::
#include<stdio.h>
#include <myconio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct facture /*structure */
{
char nom_de_l_article[60];
char code_aricle[30];
int quantite;
int prix_unitaire[30];
};
char nom_fichier[25]="facture.dat"; /* fichier1 pour enregistrer les materiaux.*/
int main()
{ /*page de garde*/
void Ajout(char *nom_fon);/*prototype fonction ajout .*/
void Affichage(char *nom_fon); /*prototype fonction affichage, qui affice les enregistrements*/
int ch;
clrscr() ;
do
{
clrscr() ;
gotoxy(27,2);
printf("** GESTION D'UNE facture ** ");
gotoxy(3,6);
printf("(1) Ajouter un nouveau article.");
gotoxy(3,10);
printf("(3) Afficher les articles. ");
printf("(6) Quitter.");
gotoxy(3,20);
printf("votre choix: ? ");
scanf("%d",&ch);
getchar();
switch (ch)
{
case 1:Ajout(nom_fichier); /* appelle du fonction ajout.*/
break;
case 3:Affichage(nom_fichier);
break;
}
}
while(ch!=6);
clrscr() ;
gotoxy(17,21);
printf("presser ENTRER pour quitter definitivement:");
getchar();
}}
void Ajout(char *nom_fon) /* fonction ajout */
{
FILE* Ahmed; /*creation d'un fichier*/
char c;
int i;
facture carte; /* definir un pointeur sur x(enregistrement)*/
Ahmed=fopen(nom_fon,"a"); /* ouverture d'un fichier en mode "a" Ajout*/
clrscr() ;
do
{
printf("\n nom de l article : ");
scanf("%s",carte.nom_de_l_article);
fflush( stdin ) ;
printf("\n code de l'article : ");
scanf("%s",&carte.code_aricle);
fflush( stdin ) ;
printf("\n la quantité : ");
scanf("%d",&carte.quantite);
fflush( stdin ) ;
printf("\n le prix unitaire : ");
scanf("%d",carte.prix_unitaire);
fflush( stdin ) ;
fwrite(&carte,sizeof(facture),2,Ahmed);
printf("\n nouvelle entr‚e?(o - n)");
c=getchar();
}
while(c=='o');
fclose(Ahmed); /*fermeture de fichier (Ahmed)*/
}
void Affichage(char *nom_fon) /* La fonction affichage*/
{
clrscr() ;
FILE* Ahmed1;
int j,i,d,t,k;
struct facture *X;
Ahmed1=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed1,0,2);
d=ftell(Ahmed1)/t;
X=(facture *) malloc(sizeof(facture));
fseek(Ahmed1,0,0);
clrscr() ;
gotoxy(2,1);
printf("nom de l'article");
gotoxy(28,1);
printf("|");
gotoxy(29,1);
printf("code");
gotoxy(43,1);
printf("|");
gotoxy(44,1);
printf("quantite");
gotoxy(56,1);
printf("|");
gotoxy(57,1);
printf("prix_unitaire");
printf("\n -------------------------------------------------------------------------------");
j=1;
k=10;
for(i=0;i<d;i++)
{
if(i==0)
j=i+3;
fread(X,sizeof(facture),1,Ahmed1);
gotoxy(3,j);
printf("%s",X->nom_de_l_article);
gotoxy(28,j);
printf("|");
gotoxy(35,j);
printf("%s",X->code_aricle);
gotoxy(43,j);
printf("|");
gotoxy(48,j);
printf("%d",X->quantite);
gotoxy(56,j);
printf("|");
gotoxy(60,j);
printf("%d",X->prix_unitaire);
if(i==k)
{printf("\n"); gotoxy(1,24); printf(" --------------------------------------------------page Suivante:Appuiyer ENTRER"); }
else printf("\n -------------------------------------------------------------------------------");
j=j+1;
j=j+1;
if (i==k)
{
getchar();
clrscr() ;
gotoxy(1,1);
printf("nom de l'article");
gotoxy(29,1);
printf("code");
gotoxy(44,1);
printf("quantite");
gotoxy(60,1);
printf("prix_unitaire");
printf("\n -----------------------------------------------------------------------------");
j=3;
k=11+k;
}
}
printf("\n \nle nombre d'enregistrements est : %d",i);
fclose(Ahmed1);
getchar();
}
voila le code :::::::::::
:::::::::::::::::::::::::
#include<stdio.h>
#include <myconio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct facture /*structure */
{
char nom_de_l_article[60];
char code_aricle[30];
int quantite;
int prix_unitaire[30];
};
char nom_fichier[25]="facture.dat"; /* fichier1 pour enregistrer les materiaux.*/
int main()
{ /*page de garde*/
void Ajout(char *nom_fon);/*prototype fonction ajout .*/
void Affichage(char *nom_fon); /*prototype fonction affichage, qui affice les enregistrements*/
int ch;
clrscr() ;
do
{
clrscr() ;
gotoxy(27,2);
printf("** GESTION D'UNE facture ** ");
gotoxy(3,6);
printf("(1) Ajouter un nouveau article.");
gotoxy(3,10);
printf("(3) Afficher les articles. ");
printf("(6) Quitter.");
gotoxy(3,20);
printf("votre choix: ? ");
scanf("%d",&ch);
getchar();
switch (ch)
{
case 1:Ajout(nom_fichier); /* appelle du fonction ajout.*/
break;
case 3:Affichage(nom_fichier);
break;
}
}
while(ch!=6);
clrscr() ;
gotoxy(17,21);
printf("presser ENTRER pour quitter definitivement:");
getchar();
}}
void Ajout(char *nom_fon) /* fonction ajout */
{
FILE* Ahmed; /*creation d'un fichier*/
char c;
int i;
facture carte; /* definir un pointeur sur x(enregistrement)*/
Ahmed=fopen(nom_fon,"a"); /* ouverture d'un fichier en mode "a" Ajout*/
clrscr() ;
do
{
printf("\n nom de l article : ");
scanf("%s",carte.nom_de_l_article);
fflush( stdin ) ;
printf("\n code de l'article : ");
scanf("%s",&carte.code_aricle);
fflush( stdin ) ;
printf("\n la quantité : ");
scanf("%d",&carte.quantite);
fflush( stdin ) ;
printf("\n le prix unitaire : ");
scanf("%d",carte.prix_unitaire);
fflush( stdin ) ;
fwrite(&carte,sizeof(facture),2,Ahmed);
printf("\n nouvelle entr‚e?(o - n)");
c=getchar();
}
while(c=='o');
fclose(Ahmed); /*fermeture de fichier (Ahmed)*/
}
void Affichage(char *nom_fon) /* La fonction affichage*/
{
clrscr() ;
FILE* Ahmed1;
int j,i,d,t,k;
struct facture *X;
Ahmed1=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed1,0,2);
d=ftell(Ahmed1)/t;
X=(facture *) malloc(sizeof(facture));
fseek(Ahmed1,0,0);
clrscr() ;
gotoxy(2,1);
printf("nom de l'article");
gotoxy(28,1);
printf("|");
gotoxy(29,1);
printf("code");
gotoxy(43,1);
printf("|");
gotoxy(44,1);
printf("quantite");
gotoxy(56,1);
printf("|");
gotoxy(57,1);
printf("prix_unitaire");
printf("\n -------------------------------------------------------------------------------");
j=1;
k=10;
for(i=0;i<d;i++)
{
if(i==0)
j=i+3;
fread(X,sizeof(facture),1,Ahmed1);
gotoxy(3,j);
printf("%s",X->nom_de_l_article);
gotoxy(28,j);
printf("|");
gotoxy(35,j);
printf("%s",X->code_aricle);
gotoxy(43,j);
printf("|");
gotoxy(48,j);
printf("%d",X->quantite);
gotoxy(56,j);
printf("|");
gotoxy(60,j);
printf("%d",X->prix_unitaire);
if(i==k)
{printf("\n"); gotoxy(1,24); printf(" --------------------------------------------------page Suivante:Appuiyer ENTRER"); }
else printf("\n -------------------------------------------------------------------------------");
j=j+1;
j=j+1;
if (i==k)
{
getchar();
clrscr() ;
gotoxy(1,1);
printf("nom de l'article");
gotoxy(29,1);
printf("code");
gotoxy(44,1);
printf("quantite");
gotoxy(60,1);
printf("prix_unitaire");
printf("\n -----------------------------------------------------------------------------");
j=3;
k=11+k;
}
}
printf("\n \nle nombre d'enregistrements est : %d",i);
fclose(Ahmed1);
getchar();
}
A voir également:
- Enregistrer dans un fichier (programmae en c)
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Audacity enregistrer son pc - Guide
- Fichier rar - Guide
12 réponses
c'est le premier ajout qui est recopié ou c'est la premiere facture affichée dans ton fichier ?
par contre y'a une question que je me pose
est-ce que le 2 est bon dans ca
j'aurais mis 1 mais je suis pas sur de ca
fwrite(&carte,sizeof(facture),2,Ahmed);
par contre y'a une question que je me pose
est-ce que le 2 est bon dans ca
j'aurais mis 1 mais je suis pas sur de ca
fwrite(&carte,sizeof(facture),2,Ahmed);
tu as raison ,,, il suffit qu'il y aura "1",,, mais cela ne fait pas resoudre ,,,,(2= afficher 2fois)
voila une version plus corrigé du code
#include<stdio.h>
#include <myconio.h>
#include<stdlib.h>
#include<string.h>
struct facture /*structure */
{
char nom_de_l_article[60];
char code_aricle[30];
int quantite;
char prix_unitaire[30];
};
char nom_fichier[25]="facture.txt"; /* fichier1 pour enregistrer les materiaux.*/
int main()
{ /*page de garde*/
clrscr() ;/*effa‡e totalement l'ecran.*/
clrscr() ;
textattr(9);
textcolor(YELLOW);
clrscr() ;
gotoxy(13/2,5); /* permet au curseur d'aller au coordonn‚e entre().*/
printf("*****************...universite abdelmalek essaadi...******************");
gotoxy(10,7);
printf("*********************..FST-Tanger..************************");
gotoxy(6,9);
printf("********************.La GESTION D'une facture.*******************");
gotoxy(15,15);
textcolor(15);
printf("**** REALISE PAR : adil et mohamed *****\n");
gotoxy(18,22);
printf("presser ENTRER pour avoir les choix: ");
getchar();
{
void Ajout(char *nom_fon);/*prototype fonction ajout .*/
void Affichage(char *nom_fon); /*prototype fonction affichage, qui affice les enregistrements*/
void Rechercher(char *nom_fon);/* prototype de fonction recherche qui recherche un enregistrement dans le fichier "Materiel.don".*/
int ch;
clrscr() ;
do
{
clrscr() ;
gotoxy(27,2);
printf("** GESTION D'UNE facture ** ");
gotoxy(3,6);
printf("(1) Ajouter un nouveau article.");
gotoxy(3,8);
printf("(2 Afficher les articles. ");
gotoxy(44,6);
printf("(3) Rechercher un article.");
gotoxy(44,8);
printf("(4) Quitter.");
gotoxy(3,20);
printf("votre choix: ? ");
scanf("%d",&ch);
getchar();
switch (ch)
{
case 1:Ajout(nom_fichier); /* appelle du fonction ajout.*/
break;
case 2:Affichage(nom_fichier);
break;
case 3:Rechercher(nom_fichier);
break;
}
}
while(ch!=4);
clrscr() ;
gotoxy(17,21);
printf("presser ENTRER pour quitter definitivement:");
getchar();
}}
void Ajout(char *nom_fon) /* fonction ajout */
{
FILE* Ahmed; /*creation d'un fichier*/
char c;
int i;
facture carte; /* definir un pointeur sur x(enregistrement)*/
Ahmed=fopen(nom_fon,"a+"); /* ouverture d'un fichier en mode "a" Ajout*/
clrscr() ;
rewind(Ahmed);
do
{
printf("\n nom de l article : ");
scanf("%s",carte.nom_de_l_article);
fflush( stdin ) ;
printf("\n code de l'article : ");
scanf("%s",&carte.code_aricle);
fflush( stdin ) ;
printf("\n la quantité : ");
scanf("%d",&carte.quantite);
fflush( stdin ) ;
printf("\n le prix unitaire : ");
scanf("%s",&carte.prix_unitaire);
fflush( stdin ) ;
fwrite(&carte,sizeof(facture),1,Ahmed);
printf("\n nouvelle entr‚e?(o - n)");
c=getchar();
fclose(Ahmed);
Ahmed=fopen(nom_fon,"a");
rewind(Ahmed);
}
while(c=='o');
fclose(Ahmed); /*fermeture de fichier (Ahmed)*/
}
void Affichage(char *nom_fon) /* La fonction affichage*/
{
clrscr() ;
FILE* Ahmed1;
int j,i,d,t,k;
facture carte ;
Ahmed1=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed1,0,2);
d=ftell(Ahmed1)/t;
fseek(Ahmed1,0,0);
clrscr() ;
gotoxy(2,1);
printf(" nom de l'article");
gotoxy(28,1);
printf("|");
gotoxy(29,1);
printf(" code");
gotoxy(43,1);
printf("|");
gotoxy(44,1);
printf(" quantite");
gotoxy(56,1);
printf("|");
gotoxy(57,1);
printf(" prix_unitaire (DH)");
printf("\n -------------------------------------------------------------------------------");
j=1;
k=10;
for(i=0;i<d;i++)
{
if(i==0)
j=i+3;
fread(& carte,sizeof(facture),1,Ahmed1);
gotoxy(3,j);
printf("%s",carte.nom_de_l_article);
gotoxy(28,j);
printf("|");
gotoxy(35,j);
printf("%s",carte.code_aricle);
gotoxy(43,j);
printf("|");
gotoxy(48,j);
printf("%d",carte.quantite);
gotoxy(56,j);
printf("|");
gotoxy(60,j);
printf("%s",carte.prix_unitaire);
if(i==k)
{printf("\n"); gotoxy(1,24); printf(" --------------------------------------------------page Suivante:Appuiyer ENTRER"); }
else printf("\n -------------------------------------------------------------------------------");
j=j+1;
j=j+1;
if (i==k)
{
getchar();
clrscr() ;
gotoxy(1,1);
printf("nom de l'article");
gotoxy(29,1);
printf("code");
gotoxy(44,1);
printf("quantite");
gotoxy(60,1);
printf("prix_unitaire (DH)");
printf("\n -----------------------------------------------------------------------------");
j=3;
k=11+k;
}
}
printf("\n \nle nombre d'enregistrements est : %d",i);
fclose(Ahmed1);
getchar();
}
void Rechercher(char *nom_fon)
{
FILE *Ahmed5;
facture *x;
int i,t,n,j; int a;
char ch[20];
clrscr() ;
printf("\n donner le nom de l'rticle ");
scanf("%s",ch);
getchar();
Ahmed5=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed5,0,2);
n=ftell(Ahmed5)/t;
fseek(Ahmed5,0,0);
x=(facture*)malloc(t);
i=0;
do
{
fread(x,1,t,Ahmed5);
i++;
}
while(strcmp(x->nom_de_l_article,ch)!=0 && i<=n);
if(strcmp(x->nom_de_l_article,ch)==0)
{
gotoxy(1,5);
printf("*nomMateriel:%s",x->nom_de_l_article);
gotoxy(25,5);
printf("*ref:%s",x->code_aricle);
gotoxy(44,5);
printf("*Type:%d",x->quantite);
gotoxy(60,5);
printf("*Atelier:%d\n",x->prix_unitaire);
getchar();
}
else printf("\n code no trouv‚.");
getchar();
fclose(Ahmed5);
}
#include<stdio.h>
#include <myconio.h>
#include<stdlib.h>
#include<string.h>
struct facture /*structure */
{
char nom_de_l_article[60];
char code_aricle[30];
int quantite;
char prix_unitaire[30];
};
char nom_fichier[25]="facture.txt"; /* fichier1 pour enregistrer les materiaux.*/
int main()
{ /*page de garde*/
clrscr() ;/*effa‡e totalement l'ecran.*/
clrscr() ;
textattr(9);
textcolor(YELLOW);
clrscr() ;
gotoxy(13/2,5); /* permet au curseur d'aller au coordonn‚e entre().*/
printf("*****************...universite abdelmalek essaadi...******************");
gotoxy(10,7);
printf("*********************..FST-Tanger..************************");
gotoxy(6,9);
printf("********************.La GESTION D'une facture.*******************");
gotoxy(15,15);
textcolor(15);
printf("**** REALISE PAR : adil et mohamed *****\n");
gotoxy(18,22);
printf("presser ENTRER pour avoir les choix: ");
getchar();
{
void Ajout(char *nom_fon);/*prototype fonction ajout .*/
void Affichage(char *nom_fon); /*prototype fonction affichage, qui affice les enregistrements*/
void Rechercher(char *nom_fon);/* prototype de fonction recherche qui recherche un enregistrement dans le fichier "Materiel.don".*/
int ch;
clrscr() ;
do
{
clrscr() ;
gotoxy(27,2);
printf("** GESTION D'UNE facture ** ");
gotoxy(3,6);
printf("(1) Ajouter un nouveau article.");
gotoxy(3,8);
printf("(2 Afficher les articles. ");
gotoxy(44,6);
printf("(3) Rechercher un article.");
gotoxy(44,8);
printf("(4) Quitter.");
gotoxy(3,20);
printf("votre choix: ? ");
scanf("%d",&ch);
getchar();
switch (ch)
{
case 1:Ajout(nom_fichier); /* appelle du fonction ajout.*/
break;
case 2:Affichage(nom_fichier);
break;
case 3:Rechercher(nom_fichier);
break;
}
}
while(ch!=4);
clrscr() ;
gotoxy(17,21);
printf("presser ENTRER pour quitter definitivement:");
getchar();
}}
void Ajout(char *nom_fon) /* fonction ajout */
{
FILE* Ahmed; /*creation d'un fichier*/
char c;
int i;
facture carte; /* definir un pointeur sur x(enregistrement)*/
Ahmed=fopen(nom_fon,"a+"); /* ouverture d'un fichier en mode "a" Ajout*/
clrscr() ;
rewind(Ahmed);
do
{
printf("\n nom de l article : ");
scanf("%s",carte.nom_de_l_article);
fflush( stdin ) ;
printf("\n code de l'article : ");
scanf("%s",&carte.code_aricle);
fflush( stdin ) ;
printf("\n la quantité : ");
scanf("%d",&carte.quantite);
fflush( stdin ) ;
printf("\n le prix unitaire : ");
scanf("%s",&carte.prix_unitaire);
fflush( stdin ) ;
fwrite(&carte,sizeof(facture),1,Ahmed);
printf("\n nouvelle entr‚e?(o - n)");
c=getchar();
fclose(Ahmed);
Ahmed=fopen(nom_fon,"a");
rewind(Ahmed);
}
while(c=='o');
fclose(Ahmed); /*fermeture de fichier (Ahmed)*/
}
void Affichage(char *nom_fon) /* La fonction affichage*/
{
clrscr() ;
FILE* Ahmed1;
int j,i,d,t,k;
facture carte ;
Ahmed1=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed1,0,2);
d=ftell(Ahmed1)/t;
fseek(Ahmed1,0,0);
clrscr() ;
gotoxy(2,1);
printf(" nom de l'article");
gotoxy(28,1);
printf("|");
gotoxy(29,1);
printf(" code");
gotoxy(43,1);
printf("|");
gotoxy(44,1);
printf(" quantite");
gotoxy(56,1);
printf("|");
gotoxy(57,1);
printf(" prix_unitaire (DH)");
printf("\n -------------------------------------------------------------------------------");
j=1;
k=10;
for(i=0;i<d;i++)
{
if(i==0)
j=i+3;
fread(& carte,sizeof(facture),1,Ahmed1);
gotoxy(3,j);
printf("%s",carte.nom_de_l_article);
gotoxy(28,j);
printf("|");
gotoxy(35,j);
printf("%s",carte.code_aricle);
gotoxy(43,j);
printf("|");
gotoxy(48,j);
printf("%d",carte.quantite);
gotoxy(56,j);
printf("|");
gotoxy(60,j);
printf("%s",carte.prix_unitaire);
if(i==k)
{printf("\n"); gotoxy(1,24); printf(" --------------------------------------------------page Suivante:Appuiyer ENTRER"); }
else printf("\n -------------------------------------------------------------------------------");
j=j+1;
j=j+1;
if (i==k)
{
getchar();
clrscr() ;
gotoxy(1,1);
printf("nom de l'article");
gotoxy(29,1);
printf("code");
gotoxy(44,1);
printf("quantite");
gotoxy(60,1);
printf("prix_unitaire (DH)");
printf("\n -----------------------------------------------------------------------------");
j=3;
k=11+k;
}
}
printf("\n \nle nombre d'enregistrements est : %d",i);
fclose(Ahmed1);
getchar();
}
void Rechercher(char *nom_fon)
{
FILE *Ahmed5;
facture *x;
int i,t,n,j; int a;
char ch[20];
clrscr() ;
printf("\n donner le nom de l'rticle ");
scanf("%s",ch);
getchar();
Ahmed5=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed5,0,2);
n=ftell(Ahmed5)/t;
fseek(Ahmed5,0,0);
x=(facture*)malloc(t);
i=0;
do
{
fread(x,1,t,Ahmed5);
i++;
}
while(strcmp(x->nom_de_l_article,ch)!=0 && i<=n);
if(strcmp(x->nom_de_l_article,ch)==0)
{
gotoxy(1,5);
printf("*nomMateriel:%s",x->nom_de_l_article);
gotoxy(25,5);
printf("*ref:%s",x->code_aricle);
gotoxy(44,5);
printf("*Type:%d",x->quantite);
gotoxy(60,5);
printf("*Atelier:%d\n",x->prix_unitaire);
getchar();
}
else printf("\n code no trouv‚.");
getchar();
fclose(Ahmed5);
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
puisque la taille du fichier augmente chaque fois je fais unenregistrement donc la fonction ''ajouter " marche bien ,,,
le probleme c'set dans la foction affichage : je dois mette le curseur en haut du fichier et le parcourire jusqu'à la fin
viola la foction
struct facture /*structure */
{
char nom_de_l_article[60];
char code_aricle[30];
int quantite;
char prix_unitaire[30];
};
void Affichage(char *nom_fon) /* La fonction affichage*/
{
clrscr() ;
FILE* Ahmed1;
int j,i,d,t,k;
facture carte ;
Ahmed1=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed1,0,2);
d=ftell(Ahmed1)/t;
fseek(Ahmed1,0,0);
clrscr() ;
gotoxy(2,1);
printf(" nom de l'article");
gotoxy(28,1);
printf("|");
gotoxy(29,1);
printf(" code");
gotoxy(43,1);
printf("|");
gotoxy(44,1);
printf(" quantite");
gotoxy(56,1);
printf("|");
gotoxy(57,1);
printf(" prix_unitaire (DH)");
printf("\n -------------------------------------------------------------------------------");
j=1;
k=10;
for(i=0;i<d;i++)
{
if(i==0)
j=i+3;
fread(& carte,sizeof(facture),1,Ahmed1);
gotoxy(3,j);
printf("%s",carte.nom_de_l_article);
gotoxy(28,j);
printf("|");
gotoxy(35,j);
printf("%s",carte.code_aricle);
gotoxy(43,j);
printf("|");
gotoxy(48,j);
printf("%d",carte.quantite);
gotoxy(56,j);
printf("|");
gotoxy(60,j);
printf("%s",carte.prix_unitaire);
if(i==k)
{printf("\n"); gotoxy(1,24); printf(" --------------------------------------------------page Suivante:Appuiyer ENTRER"); }
else printf("\n -------------------------------------------------------------------------------");
j=j+1;
j=j+1;
if (i==k)
{
getchar();
clrscr() ;
gotoxy(1,1);
printf("nom de l'article");
gotoxy(29,1);
printf("code");
gotoxy(44,1);
printf("quantite");
gotoxy(60,1);
printf("prix_unitaire (DH)");
printf("\n -----------------------------------------------------------------------------");
j=3;
k=11+k;
}
}
printf("\n \nle nombre d'enregistrements est : %d",i);
fclose(Ahmed1);
getchar();
}
le probleme c'set dans la foction affichage : je dois mette le curseur en haut du fichier et le parcourire jusqu'à la fin
viola la foction
struct facture /*structure */
{
char nom_de_l_article[60];
char code_aricle[30];
int quantite;
char prix_unitaire[30];
};
void Affichage(char *nom_fon) /* La fonction affichage*/
{
clrscr() ;
FILE* Ahmed1;
int j,i,d,t,k;
facture carte ;
Ahmed1=fopen(nom_fon,"r+");
t=sizeof(facture);
fseek(Ahmed1,0,2);
d=ftell(Ahmed1)/t;
fseek(Ahmed1,0,0);
clrscr() ;
gotoxy(2,1);
printf(" nom de l'article");
gotoxy(28,1);
printf("|");
gotoxy(29,1);
printf(" code");
gotoxy(43,1);
printf("|");
gotoxy(44,1);
printf(" quantite");
gotoxy(56,1);
printf("|");
gotoxy(57,1);
printf(" prix_unitaire (DH)");
printf("\n -------------------------------------------------------------------------------");
j=1;
k=10;
for(i=0;i<d;i++)
{
if(i==0)
j=i+3;
fread(& carte,sizeof(facture),1,Ahmed1);
gotoxy(3,j);
printf("%s",carte.nom_de_l_article);
gotoxy(28,j);
printf("|");
gotoxy(35,j);
printf("%s",carte.code_aricle);
gotoxy(43,j);
printf("|");
gotoxy(48,j);
printf("%d",carte.quantite);
gotoxy(56,j);
printf("|");
gotoxy(60,j);
printf("%s",carte.prix_unitaire);
if(i==k)
{printf("\n"); gotoxy(1,24); printf(" --------------------------------------------------page Suivante:Appuiyer ENTRER"); }
else printf("\n -------------------------------------------------------------------------------");
j=j+1;
j=j+1;
if (i==k)
{
getchar();
clrscr() ;
gotoxy(1,1);
printf("nom de l'article");
gotoxy(29,1);
printf("code");
gotoxy(44,1);
printf("quantite");
gotoxy(60,1);
printf("prix_unitaire (DH)");
printf("\n -----------------------------------------------------------------------------");
j=3;
k=11+k;
}
}
printf("\n \nle nombre d'enregistrements est : %d",i);
fclose(Ahmed1);
getchar();
}
c'est quoi exactement le probleme ?
erreur de compilation ? si oui quel message d'erreur ?
ou pas d'erreur de compilation mais le programme fait pas ce que tu veux ?
erreur de compilation ? si oui quel message d'erreur ?
ou pas d'erreur de compilation mais le programme fait pas ce que tu veux ?
non il s'execute correctement mais qd je veux afficher mes enregistrements, il affiche le premier 2 fois ,, quand je fais un nouveau enregistrement il affiche le prmier 3 fois et ainsi de suite......
il fallait signaler que devc++ ne reconnait pa
textattr();
textcolor();
clrscr() ;
gotoxy()
donc j'ai ajouter dans le fichier inclue une bibliothèque myconio.h pour executer le programme ,,, donc je sais pas si vous arriver à le compiler .
si vous vouler cette fonction vous la copier dans le fichier include sous " myconio.h"
// Nom du fichier : myconio.h
// Auteur : prof.geii37@laposte.net
// Version : Novembre 2004
// Objectif : remédier à l'absence de certaines fonctions conio sous DevC++
/* Remarques :
- Dev-C++ possède déjà une bibliothèque conio dans laquelle les fonctions
« getch », « getche », « kbhit », « putch » et « ungetch » sont codées.
- « textmode n'a pas été réécrite car les modes d'affichage prévus sous DOS
n'ont pas de sens dans une fenêtre console Windows.
- « window » n'a pas pu être écrite... seule une fonction « MYclrwin » a été
codée pour remplacer l'appel de « window » suivi d'un « clrscr ».
Toutefois la zone d'écriture à l'écran n'est pas limitée.
- « MYwindow » redimensionne la fenêtre de la console.
A noter : le comportement de cette fonction n'a aucun rapport avec celui
de « window » de conio.
*/
#ifndef _MYCONIO_H_
#define _MYCONIO_H_
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <wincon.h>
#ifdef __cplusplus
extern "C" {
#endif
struct text_info {
unsigned char winleft;
unsigned char wintop;
unsigned char winright;
unsigned char winbottom;
unsigned char attribute;
unsigned char normattr;
unsigned char currmode;
unsigned char screenheight;
unsigned char screenwidth;
unsigned char curx;
unsigned char cury;
};
enum COLORS { BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY,
DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED,
LIGHTMAGENTA, YELLOW, WHITE } ;
#define _NOCURSOR 0
#define _SOLIDCURSOR 1
#define _NORMALCURSOR 2
#define C40 1
void _setcursortype(int type);
char *cgets(char *str);
void clreol();
void clrscr();
void delline();
#define cprintf printf
#define cscanf scanf
/* Les fonctions « cprintf » et « cscanf » n'ont pas été réécrites, ceci est
peut-être une erreur...
En effet, « scanf » lit les données à partir de « stdin » et les fonctions
d'entrée de la console lisent les données à partir de « STD_INPUT_HANDLE ».
Or il semblerait que « fflush(stdin) ; » n'ait pas le même effet que
« FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)) ; »...
A suivre... */
int cputs(const char *str) ;
int Gettext(int left, int top, int right, int bottom, void *destin) ;
#define gettext Gettext
/* Cette astuce a dû être utilisée car la ligne
« int gettext(int left, int top, int right, int bottom, void *destin) ; »
produit un message d'erreur (sous Dev-C++) ! */
void gettextinfo(struct text_info *_r);
int MYgetch(void) ;
int MYgetche(void) ;
/* « getch », « getche » sont déjà définies dans <conio.h> (mingw). Cependant,
au même titre que « getchar » (stdio) ne consomme pas le caractère <CR>,
elles ne consomment pas le caractère saisi par l'utilisateur (c'est à dire :
elles n'enlèvent pas le caractère du buffer d'entrée). « MYgetch »,
« MYgetche » vident le buffer. Attention, « MYgetch » et « MYgetche »
n'enlèvent pas un caractère, mais tous les caractères disponibles. Grâce
aux directives « #define » inclus dans MYconio.cpp, ce sont les fonctions
« MYgetch » et « MYgetche » qui seront appelées si dans un source on fait
appel à « getch » ou « getche ». */
void gotoxy(int x, int y);
void highvideo();
void insline();
// kbhit : OK déjà défini dans <conio.h> (mingw)
void lowvideo();
int movetext(int left, int top, int right, int bottom, int destleft, int desttop);
void normvideo();
// putch : OK déjà défini dans <conio.h> (mingw)
int puttext(int left, int top, int right, int bottom, void *source);
void textattr(int _attr);
void textbackground(int _color);
void textcolor(int _color);
/* BLINK (clignotement) ne fonctionne pas ! Par contre, il est possible
d'utiliser les oucleurs LIGHT pour le fond d'écran, ce qui n'est pas le cas
pour une application DOS.*/
/* « void textmode(int _mode); » n'a pas été réécrite, car les modes
d'affichage DOS n'ont aucun sens dans une application console Windows. */
// ungetch : OK déjà défini dans <conio.h> (mingw)
int wherex();
int wherey();
void MYclrwin(int left, int top, int right, int bottom); // efface une zone
/* La fonction « window » de conio est fréquemment utilisée (suivi de
« clrscr ») pour effacer une zone de l'écran et modifier sa couleur en
fonction des attribus mis à jour par « textcolor » ou « textbackground ».
« MYclrwin » permet cela, mais elle n'interdit pas d'écrire en dehors
de cette zone.*/
void MYwindow(int left, int top, int right, int bottom);
/* « MYwindow » permet de redimensionner la fenêtre de la console. Cependant,
ce comportement, n'est pas celui de la fonction « window » de conio */
// void window(int left, int top, int right, int bottom);
#ifdef __cplusplus
}
#endif
#include <myconio.cpp>
#endif //_MYCONIO_H_
textattr();
textcolor();
clrscr() ;
gotoxy()
donc j'ai ajouter dans le fichier inclue une bibliothèque myconio.h pour executer le programme ,,, donc je sais pas si vous arriver à le compiler .
si vous vouler cette fonction vous la copier dans le fichier include sous " myconio.h"
// Nom du fichier : myconio.h
// Auteur : prof.geii37@laposte.net
// Version : Novembre 2004
// Objectif : remédier à l'absence de certaines fonctions conio sous DevC++
/* Remarques :
- Dev-C++ possède déjà une bibliothèque conio dans laquelle les fonctions
« getch », « getche », « kbhit », « putch » et « ungetch » sont codées.
- « textmode n'a pas été réécrite car les modes d'affichage prévus sous DOS
n'ont pas de sens dans une fenêtre console Windows.
- « window » n'a pas pu être écrite... seule une fonction « MYclrwin » a été
codée pour remplacer l'appel de « window » suivi d'un « clrscr ».
Toutefois la zone d'écriture à l'écran n'est pas limitée.
- « MYwindow » redimensionne la fenêtre de la console.
A noter : le comportement de cette fonction n'a aucun rapport avec celui
de « window » de conio.
*/
#ifndef _MYCONIO_H_
#define _MYCONIO_H_
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <wincon.h>
#ifdef __cplusplus
extern "C" {
#endif
struct text_info {
unsigned char winleft;
unsigned char wintop;
unsigned char winright;
unsigned char winbottom;
unsigned char attribute;
unsigned char normattr;
unsigned char currmode;
unsigned char screenheight;
unsigned char screenwidth;
unsigned char curx;
unsigned char cury;
};
enum COLORS { BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY,
DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED,
LIGHTMAGENTA, YELLOW, WHITE } ;
#define _NOCURSOR 0
#define _SOLIDCURSOR 1
#define _NORMALCURSOR 2
#define C40 1
void _setcursortype(int type);
char *cgets(char *str);
void clreol();
void clrscr();
void delline();
#define cprintf printf
#define cscanf scanf
/* Les fonctions « cprintf » et « cscanf » n'ont pas été réécrites, ceci est
peut-être une erreur...
En effet, « scanf » lit les données à partir de « stdin » et les fonctions
d'entrée de la console lisent les données à partir de « STD_INPUT_HANDLE ».
Or il semblerait que « fflush(stdin) ; » n'ait pas le même effet que
« FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)) ; »...
A suivre... */
int cputs(const char *str) ;
int Gettext(int left, int top, int right, int bottom, void *destin) ;
#define gettext Gettext
/* Cette astuce a dû être utilisée car la ligne
« int gettext(int left, int top, int right, int bottom, void *destin) ; »
produit un message d'erreur (sous Dev-C++) ! */
void gettextinfo(struct text_info *_r);
int MYgetch(void) ;
int MYgetche(void) ;
/* « getch », « getche » sont déjà définies dans <conio.h> (mingw). Cependant,
au même titre que « getchar » (stdio) ne consomme pas le caractère <CR>,
elles ne consomment pas le caractère saisi par l'utilisateur (c'est à dire :
elles n'enlèvent pas le caractère du buffer d'entrée). « MYgetch »,
« MYgetche » vident le buffer. Attention, « MYgetch » et « MYgetche »
n'enlèvent pas un caractère, mais tous les caractères disponibles. Grâce
aux directives « #define » inclus dans MYconio.cpp, ce sont les fonctions
« MYgetch » et « MYgetche » qui seront appelées si dans un source on fait
appel à « getch » ou « getche ». */
void gotoxy(int x, int y);
void highvideo();
void insline();
// kbhit : OK déjà défini dans <conio.h> (mingw)
void lowvideo();
int movetext(int left, int top, int right, int bottom, int destleft, int desttop);
void normvideo();
// putch : OK déjà défini dans <conio.h> (mingw)
int puttext(int left, int top, int right, int bottom, void *source);
void textattr(int _attr);
void textbackground(int _color);
void textcolor(int _color);
/* BLINK (clignotement) ne fonctionne pas ! Par contre, il est possible
d'utiliser les oucleurs LIGHT pour le fond d'écran, ce qui n'est pas le cas
pour une application DOS.*/
/* « void textmode(int _mode); » n'a pas été réécrite, car les modes
d'affichage DOS n'ont aucun sens dans une application console Windows. */
// ungetch : OK déjà défini dans <conio.h> (mingw)
int wherex();
int wherey();
void MYclrwin(int left, int top, int right, int bottom); // efface une zone
/* La fonction « window » de conio est fréquemment utilisée (suivi de
« clrscr ») pour effacer une zone de l'écran et modifier sa couleur en
fonction des attribus mis à jour par « textcolor » ou « textbackground ».
« MYclrwin » permet cela, mais elle n'interdit pas d'écrire en dehors
de cette zone.*/
void MYwindow(int left, int top, int right, int bottom);
/* « MYwindow » permet de redimensionner la fenêtre de la console. Cependant,
ce comportement, n'est pas celui de la fonction « window » de conio */
// void window(int left, int top, int right, int bottom);
#ifdef __cplusplus
}
#endif
#include <myconio.cpp>
#endif //_MYCONIO_H_