[c] mon programme ne se lance pas !!pkoi? help

mon programme ne se lance pas !!pkoi? help [c] - C - Programmation

Marsh Posté le 15-05-2004 à 11:57:32    

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
typedef struct recette { char  * nom;
                         struct ingredient * ing;
                         char * tps;
                         char * facon;
                         struct recette * rec_suiv;
                       }recette;
 
typedef struct ingredient {char * nom_ing;
                           char * quantite;
                           struct ingredient * ing_suiv;
                           }ingredient;
                           
typedef struct recette * liste_recettes;
 
 
 
void affiche_ingredient(ingredient i){
printf(" %s : %d \n",i.nom_ing,i.quantite);
if (i.ing_suiv!=NULL) affiche_ingredient(*i.ing_suiv);}                      
                     
void affiche_recette(recette r){
printf("\n\n   %s   \n\n",r.nom);
affiche_ingredient(*r.ing);
printf("temps de preparation : %d  minutes \n\n",r.tps);  
printf("instructions : %s  ",r.facon);
system("PAUSE" );
system("cls" );
menu();}
 
 
void recherche_selon_nom(liste_recettes l){
     char *chaine;
     chaine=malloc(sizeof(char));
     printf("\n\n\n Ecrivez le nom de la recette que vous souhaitez afficher : " );
     getchar();gets(chaine);
     if (l==NULL) printf("la recette ne fais pas partie du fichier source" );
     else if  (strcmp(chaine,l->nom)==0) affiche_recette(*l);
          else recherche_selon_nom(l->rec_suiv);
     
}  
 
 
void recherche_selon_tps_mini(liste_recettes l,int i){
int f;
if (l==NULL) {printf(" " );}
else {f=i;}
 
 
}
 
 
void recherche_noms_ingredients(liste_recettes l){
}
 
void recherche_ingredient_quantite(liste_recettes l){
}
 
 
void inserer_recette_fin_liste(char a[1000],liste_recettes  l) {
char t0[1000];
recette *r;
strcpy(t0,a);
if (l==NULL) {r=(liste_recettes )malloc(sizeof(recette));      
               r->nom=strtok(t0,":" );
               strtok(NULL,":" );
 //              creer_ingredient(t0,(*r).liste_ing);
               r->tps=strtok(NULL,":" );
               r->facon=strtok(strrchr(t0,':'),"\n" );
               r->rec_suiv=NULL;
               r->ing=NULL;
               l=r; }
else inserer_recette_fin_liste(t0,l->rec_suiv);
 }    
 
void effacer_tab(char t[1000]){
int i;
for (i=0;i<strlen(t);i++) {
t[i]=' ';}
t[0]='\0';}  
 
 
void structure (liste_recettes l) {
FILE *r;
char a[1000],c;
int i=0,k;
 
 r= fopen("recettes.dat", "r" );
if (!r) {printf ("*** Impossible d'ouvrir le fichier ***\n" );
         system("PAUSE" );
         menu();
         }
 else{
   do {
      if( k=!feof(r))
         {
       do{  
           c=fgetc(r);
           a[i]=c;
           i++;
           } while (c!='\n');
     //     inserer_recette_fin_liste(a,l);
          i=0;
          // effacer_tab(a);  
        }            
         
      } while(k);
    }        
}
 
 
liste_recettes creer_liste(){
return NULL ; }
 
 
 
void ajout_recette(){
FILE *recet;
char mot[200];
int i,j;
recet= fopen ("recettes.dat", "a" );
if (!recet)
        {printf ("*** Impossible d'ouvrir le fichier ***\n" );
         system("PAUSE" );
         system("cls" );
         menu();
         }
 
else    system("cls" );printf("\n\n" );
        fseek(recet, 0, SEEK_END);
        printf("Ecrivez le nom de la recette:" );
        getchar();gets(mot);
        strcat(mot,":" );  
        fprintf(recet, "%s", mot);
        printf("combien y a t il d ingredients differents ? " );scanf("%d",&i);
        while(i!=0){
        printf("Ecrivez le nom de l ingredient : " );
        getchar();gets(mot);
        strcat(mot,"," );
        fprintf(recet, "%s", mot);
        printf("Ecrivez la quantite de l\' ingredient : " );
        scanf("%d",&j);
        fprintf(recet, "%d", j);
        if (i==1) {fprintf(recet, "%s", ":" );}
        else  {fprintf(recet, "%s", ";" );}
        i=i-1;     }
        printf("Ecrivez la duree approximative en minute de preparation de la recette : " );
        scanf ("%s", &mot);
        strcat(mot,":" );
        fprintf(recet, "%s", mot);
        printf("Saisissez la recette : " );
        getchar();gets(mot);
        strcat(mot,"\n" );
        fprintf(recet, "%s", mot);
fclose(recet);        
}  
 
 
                     
                                                             
                                                             
int menu(liste_recettes l){  
int i,j;
 
l=NULL;
structure(l);
 
 
printf("           ==================\n           |  Projet de C   |\n           ==================\n\n\n\n\n 1.Recherche de Recette \n\n\n\n 2.Ajout de recette  \n\n\n\n 3.Exit\n\n\n\n\n\n" );
printf("Faites votre choix 1 , 2 ou 3 : " );scanf("%d",&i);
if ((i!=1)&&(i!=2)&&(i!=3)) {system("cls" );
                             printf("\n\n\n\n Vous n\' avez pas tape le bon chiffre , appuyez sur une touche et recommencez \n\n\n" );
                             system("PAUSE" );
                             system("cls" );
                             menu(l);}
switch(i){
case 1: system("cls" );
       printf(" \n\n\nRecherche:\n----------\n\n\n 1.selon le nom de la recette \n\n\n 2.selon le temps de preparation \n\n\n 3.selon les ingredients presents dans la recette \n\n\n 4.selon le(s) couple(s) quantite-ingredient \n\n\n 5.Retour \n\n\n\n Faites votre choix : " );scanf("%d",&j);
       switch(j){case 1: system("cls" );
                         recherche_selon_nom(l);
                         system("PAUSE" );
                         system("cls" );
                         menu(l);
                        break;
                 case 2:break;
                 case 3:break;
                 case 4:break;              
                 case 5:system("cls" );
                        menu(l);
                        break;
                 }
          break;        
case 2: system("cls" );
       printf(" \n\n\n\n\n\n 1.Ajouter Recette \n\n\n\n 2.Retour \n\n\n\n\n\n Faites votre choix : " );scanf("%d",&j);
       switch(j){case 1:ajout_recette();
                        system("cls" );
                        menu(l);                
                        break;                                                
                 case 2:system("cls" );
                        menu(l);
                        break;
                }
case 3:system("cls" );
       printf("\n\n\n\n\n\n\n A BIENTOT \n\n\n\n\n\n\n\n\n\n\n" );
       break;
       
}            
}
 
 
 
                     
main ()
{
liste_recettes l;
menu(l);
system("PAUSE" );      
}

Reply

Marsh Posté le 15-05-2004 à 11:57:32   

Reply

Marsh Posté le 15-05-2004 à 12:28:04    

efface vite tous tes system("pouet" ), tu vas te faire fusiller sous peu :D
 
sinon heu j'ai réussi à voir ça dans ton paté
 

Code :
  1. char *chaine;
  2.     chaine=malloc(sizeof(char));
  3. gets(chaine);


 
boum !
 
A+

Reply

Marsh Posté le 15-05-2004 à 12:48:18    

la balise code ça existe ;)

Reply

Marsh Posté le 15-05-2004 à 13:25:33    

ajout_recette() il manque des accolades pour le else.
Dans le if n'appelle pas menu() mais renvoie une erreur. Le code appellant (main()) ré-appelera menu().
De même ne rappelle pas menu() dans menu(), utilise une boucle.
Bcp bcp de problèmes dans ton code du à l'utilisation des fonctions genre gets, strcat, scanf, ...
Je te conseille de passer du temps à lire cette FAQ :
http://www.isty-info.uvsq.fr/~rumeau/fclc/
En particulier ces points :
http://www.isty-info.uvsq.fr/~rume [...] 8.html#q_7
http://www.isty-info.uvsq.fr/~rume [...] 8.html#q_8
http://www.isty-info.uvsq.fr/~rume [...] 8.html#q_3
http://www.isty-info.uvsq.fr/~rume [...] 8.html#q_2
Tu progresseras bcp.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed