Bonjour à vous!
J'ai un projet qui consiste à gérer un stock de produits... Ca n'a pas l'air difficile et à vrai dire ce ne l'est pas, mais je bloque sur une chose : le stockage des donnees dans un fichier binaire... Voici les principales fonctions que j'ai déjà implémenté...avec le .h correspondant :
Voici à proprement parler les fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef H_Stock01 #define H_Stock01 typedef struct{ char titre[41], auteur[41], editeur[41]; int annee; }PRODUIT; void AfficheProduit(PRODUIT *); void NouvProduit(PRODUIT *); int OpenProd(); #endif
Je crée maintenant une fonction main afin d'utiliser les fonctions et de vérifier leur validité. Pour cela, je crée un produit et je le sauvegarde dans un fichier, je recrée un et je le remes à la suite. J'essaye ensuite d'afficher le tout et là... bug rien de bon s'affiche... Pouvez-vous me dire pourquoi svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #include<stdio.h> #include<string.h> #include"Lecture.h" #include"Stock01.h" void AfficheProduit(PRODUIT * prod) { printf("\n\nAuteur : %s",prod->auteur); printf("\nEditeur : %s",prod->editeur); printf("\nTitre : %s",prod->titre); printf("\nAnnee : %d",prod->annee); } void NouvProduit(PRODUIT *prod) { printf("\n\nEntrez un titre : "); gets(prod->titre); printf("\nEntrez un editeur : "); gets(prod->editeur); printf("\nEntrez un auteur : "); gets(prod->auteur); printf("\nEntrez une annee : "); scanf("%d",&(prod->annee)); fflush(stdin); } int OpenProd() { PRODUIT * prod; FILE * pstream; pstream=fopen("..\\Produits.bin","rb"); if(!pstream) return 0; while( fread(&prod,sizeof(prod), 1, pstream),!(feof(pstream)||ferror(pstream))){ AfficheProduit(&prod); } return 1; }
Voici le main :
Maintenant petite critique par rapport à ce projet donné en classe... Ne serait-ce pas plus simple de le faire en C++ et de créer une classe produit et des méthodes sur les produits et de gérer tous les flux comme en C++ ? J'ai cette impression en fait. Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 int main() { PRODUIT prod; FILE *pstream; pstream=fopen("..\\Produits.bin","wb"); if(!pstream) return 0; do { NouvProduit(&prod); fwrite(&prod, sizeof(prod), 1, pstream); if(ferror(pstream)) { printf("\nErreure d'ecriture"); break; } } while( Encore(" \nEntrer un nouveau produit ? ", 'o' , 'n' ) ); //La fonction encore vient d'un autre module et sert juste à demander pour continuer fclose(pstream); OpenProd(); //Voilà ce qui devrait ouvrir le fichier et l'afficher Encore(" \nQuitter ", 'o' , 'n' ); return 0; }
Merci à vous !
Partager