Aide en C merci d'avance
Nouss
-
sam3000 Messages postés 1225 Date d'inscription Statut Membre Dernière intervention -
sam3000 Messages postés 1225 Date d'inscription Statut Membre Dernière intervention -
Bonjours à tous !
Voilà j'ai un souci dans mon programme C et je voudrais savoir si vous pouviez m'éclaircir voilà mes questons :
Quand on complile le programme il marche nickel par exemple on veut créer un une Base de donnée pour les vhs cela crée le fichier vhs.txt avec seulement une seule donnée !!! alors qu'on a défini le typedef film avec le Nom et le Genre (je pense que c'est assez bizarre )
Sinon lorsqu'on veut ajouter un autre film, le fichier s'ouvre ( ou recrée un autre fichier du meme nom ??) et lorsqu'on écrit dessus ca ecrase les données précédantes
enfin je voudrais savoir comment on pourrais faire pour rester dans le programme et que une fois que l'on a ajouter un film dans la base de donnée comment on pourrais retourné au menu principal.
et si il y aurait des fautes de syntaxes de me dire ou sont les fautes ^^
Je vous remercie d'avance
Voilà j'ai un souci dans mon programme C et je voudrais savoir si vous pouviez m'éclaircir voilà mes questons :
Quand on complile le programme il marche nickel par exemple on veut créer un une Base de donnée pour les vhs cela crée le fichier vhs.txt avec seulement une seule donnée !!! alors qu'on a défini le typedef film avec le Nom et le Genre (je pense que c'est assez bizarre )
Sinon lorsqu'on veut ajouter un autre film, le fichier s'ouvre ( ou recrée un autre fichier du meme nom ??) et lorsqu'on écrit dessus ca ecrase les données précédantes
enfin je voudrais savoir comment on pourrais faire pour rester dans le programme et que une fois que l'on a ajouter un film dans la base de donnée comment on pourrais retourné au menu principal.
et si il y aurait des fautes de syntaxes de me dire ou sont les fautes ^^
Je vous remercie d'avance
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char nom[20]; char genre[20]; }FICHE; typedef enum { CatProduitVHS =1, CatProduitDVD, CatProduitLivre, CatProduitCD, }CatProduit; FILE* OuvrirFichier(CatProduit CatProd) //ouvre le fichier du produit selon sa categorie { FILE * tmpFile; switch(CatProd) { case CatProduitVHS : tmpFile = fopen("vhs.txt","a"); /* <- peut etre un pb ici ? */ break; case CatProduitDVD : tmpFile = fopen("dvd.txt","a"); /* <- peut etre un pb ici ? */ break; case CatProduitLivre : tmpFile = fopen("livre.txt","a"); /* <- peut etre un pb ici ? */ break; case CatProduitCD : tmpFile = fopen("CD.txt","a"); /* <- peut etre un pb ici ? */ break; default : break; } return tmpFile; } int InsererProduit(FILE * fichierProduit,CatProduit CatProd, FICHE *Prod) //On insere le Produit dans le fichier Produit selon sa Categorie { /* On insère les données à la fin !! */ fseek(fichierProduit,0,SEEK_END); /* <- peut etre surtout un pb ici ? */ // on écrit fflush(stdout); fwrite(Prod,sizeof(FICHE),1,fichierProduit); fflush(stdin); return(1); } void AfficherProduit(FILE * fichierProduit,CatProduit CatProd, FICHE *Prod) //Affiche le produit à partir d'un fichier selon sa catégorie { FILE * tmpFile; // char a; switch(CatProd) { case CatProduitVHS : tmpFile = fopen("vhs.txt","r"); printf("%s\n",(*Prod).nom); fflush(stdout); printf("%s\n",(*Prod).genre); fflush(stdout); break; /* La on voudrait revenir une fois qu'on a ecrit les données revenir au programme principal */ case CatProduitDVD : tmpFile = fopen("dvd.txt","r"); printf("%s\n",(*Prod).nom); printf("%s\n",(*Prod).genre); break; /* de même ici */ case CatProduitLivre : break; default : break; } } //Fonction de du menu inserer affichier ( test ) void InsererAfficherProduit(int choixProd,FILE *fichierProduit,CatProduit CatProd,FICHE *Prod) //selon ChoiProd Inserer ou afficher le produit selon la categorie { switch(choixProd) { case 1: switch(CatProd) { case CatProduitVHS : printf("Nom du VHS : "); fflush(stdout); scanf("%s",Prod->nom); fflush(stdin); printf("Genre du VHS : "); fflush(stdout); scanf("%s",Prod->genre); fflush(stdin); break; case CatProduitDVD : printf("Nom du DVD : "); fflush(stdout); scanf("%s",Prod->nom); fflush(stdin); printf("Genre du DVD : "); fflush(stdout); scanf("%s",Prod->genre); fflush(stdin); break; case CatProduitLivre: printf("Nom du Livre : "); fflush(stdout); scanf("%s",Prod->nom); fflush(stdin); printf("Genre du Livre : "); fflush(stdout); scanf("%s",Prod->genre); fflush(stdin); break; case CatProduitCD : printf("Nom du CD : "); fflush(stdout); scanf("%s",Prod->nom); fflush(stdin); printf("Genre du CD : "); fflush(stdout); scanf("%s",Prod->genre); fflush(stdin); break; } InsererProduit(fichierProduit,CatProd,Prod); case 2: AfficherProduit(fichierProduit,CatProd,Prod); break; } return; } int main () { FICHE *Prod; FILE *Fichier; // char buffer[100]; int choixProd,choixCat; CatProduit CatProd; // il faut choisir entre DVD et VHS -_- printf("Bienvenu dans le programme de Location \n\n"); printf("1.VHS \n"); printf("2.DVD \n"); printf("3.Livre \n"); printf("4.CD \n\n"); printf("Votre Choix : "); fflush(stdout); scanf("%d",&choixCat); switch(choixCat) { case 1 : CatProd = CatProduitVHS; break; case 2 : CatProd = CatProduitDVD; break; case 3 : CatProd = CatProduitLivre; break; case 4 : CatProd = CatProduitCD; break; default : break; } Prod=(FICHE*)malloc(sizeof(FICHE)); // On ouvre le fichier correpondant à la catégorie désigner par CatProd Fichier= OuvrirFichier(CatProd); printf("1.Inserer Produit \n"); printf("2.Afficher Produit \n"); fflush(stdout); scanf("%d",&choixProd); fflush(stdin); InsererAfficherProduit( choixProd,Fichier,CatProd,Prod); return(1); }
A voir également:
- Aide en C merci d'avance
- Démarrage avancé windows 10 - Guide
- Regarder koh lanta en avance - Forum TV & Vidéo
- Supprimer filtre avancé excel - Forum Excel
- Trottinette qui s'allume mais n'avance pas - Forum Loisirs / Divertissements
- Réinitialiser une trottinette électrique qui n'avance plus - Forum Loisirs / Divertissements
5 réponses
salut =)
bon je m'excuse parce que je n'ai lu ton code en entier, mais c'est possible que l'erreur se situe quand tu écris dans le fichier :
car tu passes une structure, et la fonction fwrite attend une chaine de caractères. or une chaine de caractères s'arrête quand il y a un 0, qui est après le nom de ton film.
il faudrait donc que tu essaies d'écrire d'abord que le nom et ensuite le genre.
je ne sais pas si c'est ça, mais ca peut être une piste.
++
bon je m'excuse parce que je n'ai lu ton code en entier, mais c'est possible que l'erreur se situe quand tu écris dans le fichier :
fwrite(Prod,sizeof(FICHE),1,fichierProduit);
car tu passes une structure, et la fonction fwrite attend une chaine de caractères. or une chaine de caractères s'arrête quand il y a un 0, qui est après le nom de ton film.
il faudrait donc que tu essaies d'écrire d'abord que le nom et ensuite le genre.
je ne sais pas si c'est ça, mais ca peut être une piste.
++
Merci Luffy
Mais en fait j'expose mon problème, je m'explique en utilisant visual C ++ et lorsque je compile je rentre les données pour le Nom et le Genre, mais lorsque j'ouvre le fichier txt crée il m'affiche des caractères bizarre ( 穡e췍췍췍췍췍췍췍췍穡e췍췍췍췍췍췍췍췍 )
est-ce normal ?
Je ne pense pas car lorsque je demande d'afficher ce qui se trouve dans le texte je n'obtients pas les infos que j'ai ecrite en txt
Sur un autre compilateur C ( Eclipse ) une seul donée parmis les deux sont visibles dans le fichier txt donc je sais pas si j'ai fais des fautes lors de l'écriture des fonctions mais cela m'intrigue bcp.
Quelqu'un peut il maider à y voir plus clair?
Merci d'avance ^^
Mais en fait j'expose mon problème, je m'explique en utilisant visual C ++ et lorsque je compile je rentre les données pour le Nom et le Genre, mais lorsque j'ouvre le fichier txt crée il m'affiche des caractères bizarre ( 穡e췍췍췍췍췍췍췍췍穡e췍췍췍췍췍췍췍췍 )
est-ce normal ?
Je ne pense pas car lorsque je demande d'afficher ce qui se trouve dans le texte je n'obtients pas les infos que j'ai ecrite en txt
Sur un autre compilateur C ( Eclipse ) une seul donée parmis les deux sont visibles dans le fichier txt donc je sais pas si j'ai fais des fautes lors de l'écriture des fonctions mais cela m'intrigue bcp.
Quelqu'un peut il maider à y voir plus clair?
Merci d'avance ^^
une piste (que je pense juste!)
par exemple dans la fonction AfficherProduit, tu ne fait qu'ouvrir le fichier, puis tu affiche le contenu de la structure!
il n'y a pas de fonction de lecture des donnees à partir du fichier-> appel de fread( )
l'acces à des donnees doit suivre un ordre precis:
Pour l'ecriture dans fichier:
par exemple dans la fonction AfficherProduit, tu ne fait qu'ouvrir le fichier, puis tu affiche le contenu de la structure!
il n'y a pas de fonction de lecture des donnees à partir du fichier-> appel de fread( )
l'acces à des donnees doit suivre un ordre precis:
fd=fopen("fichier","r"); fread(fd,... ); fclose(fd);
Pour l'ecriture dans fichier:
fd=fopen("fichier","w"); fwrite(fd,... ); fclose(fd);
Merci sam3000
Je vais esseyer de faire une fonction qui selon le fichier ouvert lancera le fread aproprié mais a ton avis ou dois je mettre les fcloses sachant qu'il y en aura 4 ( un pour les DVD, un pour VHS, un pour Livre et un pour CD )
Et la question qui me turlupine depuis pas mal de temps
Je voudrais savoir comment on pourrais faire pour rester dans le programme et qu'une fois que l'on a ajouté un film dans la base de donnée comment on pourrais retourner au menu principal.
Merci pour votre aide ! ^^
Je vais esseyer de faire une fonction qui selon le fichier ouvert lancera le fread aproprié mais a ton avis ou dois je mettre les fcloses sachant qu'il y en aura 4 ( un pour les DVD, un pour VHS, un pour Livre et un pour CD )
Et la question qui me turlupine depuis pas mal de temps
Je voudrais savoir comment on pourrais faire pour rester dans le programme et qu'une fois que l'on a ajouté un film dans la base de donnée comment on pourrais retourner au menu principal.
Merci pour votre aide ! ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est une question d'alogorithmique!
la structure du programme devrais etre:
la structure du programme devrais etre:
declaration des variables globales fonction menu_option1() { } fonction menu_option2() { } fonction menu_option3() { } main() { int quitter=0; int choix; do { //affichage du menu printf("0-quitter\n"); printf("1-option 1\n"); printf("2-option 2\n"); printf("3-option 3\n"); printf("votre choix:");scanf("%d",&choix); //execution de la fonction choisie switch(choix) { case 0: quitter=1;break; case 1: menu_option1();break; case 2: menu_option2();break; case 3: menu_option3();break; } } while (!quitter); }