Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1738 connectés 

  FORUM HardWare.fr
  Programmation
  C

  aide pour creation annuaire (débutant)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide pour creation annuaire (débutant)

n°1532802
Anarchne
Posté le 23-03-2007 à 14:25:20  profilanswer
 

Bonjour.
J'ai un problème avec mon programme d'annuaire et je n'arrive pas à voir où sa cloche.
Le voilà:
 
 
 
/*declaration des include*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define NBMAX 500
 
 
/*declaration des type def*/
typedef struct
{
        char nom[20];
        char prenom[20];
        char numtel[12];
}personne;
 
typedef personne *tableau[NBMAX];
 
 
 
/*declaration des prototypes*/
void menu(tableau p,int nbm);
void ajouter(tableau p,int nbm);
void afficher(tableau p);
void supprimer(tableau p);
void modifier(tableau p);
 
 
 
/*prototypes complets*/
void menu(tableau p,int nbm)
{
     char car;
     
     do
     {
          printf("             MENU\n\n" );
          printf("    Ajouter une personne à l'annuaire ....... A\n" );
          printf("    Afficher l'annuaire ..................... F\n" );
          printf("    Supprimer une personne de l'annuaire .... S\n" );
          printf("    Modifier une personne de l'annuaire ..... M\n" );
          printf("    Quitter ................................. Q\n" );
          printf("Votre choix :  " );
          car=toupper(getch());
     
                   switch(car)
                   {
                               
                              case 'A': ajouter(p,nbm);break;
                              case 'F': afficher(p);break;
                              case 'S': supprimer(p);break;
                              case 'M': modifier(p);break;
                              case 'Q': break;
                               
                              default : printf("Erreur de saisie !\n" );
                               
                   }
                   
     }
     while(car != 'Q');
     
}
           
 
void ajouter(tableau p,int nbm)
{
     int i;
     for (i=0;i<nbm;i++)
     {
         
         if (p[i]==NULL)
         {
                                 printf("\nQuel est le nom de la personne?" );
                                 gets(p[i]->nom);
                                 printf("\nQuel est le prénom de la personne?" );
                                 gets(p[i]->prenom);
                                 printf("\nQuel est le numéro de téléphone de la personne?" );
                                 gets(p[i]->numtel);
 
          }
           
      }
}
 
 
 
void afficher(tableau p)
{
     int i;
     int l=strlen(p);
     for (i=0;i<l;i++)
     {
         printf("%s     %s     %s\n",p[i]->nom,p[i]->prenom,p[i]->numtel);
     }
 
}
 
 
void supprimer(tableau p)
{
     char recherche[20];
     int rech;
     int i;
     
     printf("Quelle personne voulez-vous supprimer? (entrez le nom)" );
     gets(recherche);
     for (i=0;i<NBMAX;i++)
     {
         
         rech=strcmp(p[i]->nom,recherche);
         
         if (rech==0)
         {
                     printf("\nQuel est le nouveau numéro de téléphone de la personne?" );
                     gets(p[i]->numtel);                
         }
         
     }
         
     
 
}
 
 
 
void modifier(tableau p)
{
     char recherche[20];
     int rech;
     int i;
     
     printf("Quelle personne voulez-vous supprimer? (entrez le nom)" );
     scanf("%s",recherche);
     for (i=0;i<NBMAX;i++)
     {
         
         rech=strcmp(p[i]->nom,recherche);
         
         if (rech==0)
         {
                       free(p[i]);
                       p[i]=NULL;
         }
           
     }
     
}
 
 
 
 
 
/*main*/
int main()
{
    tableau tab;
     
    /*reservation*/
    int i;
     
    for (i=0;i<NBMAX;i++)
    {
                 
         tab[i]=(personne*)malloc(sizeof(personne));
         tab[i]=NULL;
         
    }
     
     
    menu(tab,NBMAX);
    return 0;
}
 
 
 
 
Je sais qu'il y a des trucs qui ne vont pas dans mes fonctions modif et suppr  mais c'est surtout les fonctions ajouter et afficher qui me chagrinent.
En effet lorsque je veux ajouter une personne le programme me demande le nom et pouf il se ferme apres que je l'ais entré.
A mon avis j'ai mal réservé la mémoire dynamique pour les noms prénoms et numéros de tel mais je ne suis pas sûr.
Si quelqu'un pouvait me dire se qui ne va pas se serait cool.

mood
Publicité
Posté le 23-03-2007 à 14:25:20  profilanswer
 

n°1532810
_darkalt3_
Proctopathe
Posté le 23-03-2007 à 14:37:57  profilanswer
 

Utilise un debugger et observe le comportement de ton programme, t'y verras plus clair.


---------------
Töp of the plöp
n°1532815
Anarchne
Posté le 23-03-2007 à 14:48:32  profilanswer
 

J'ai déjà fais sa me met une violation d'accès est apparue (erreur de segmentation).
J'y vois pas plus clair pour autant.

n°1532826
_darkalt3_
Proctopathe
Posté le 23-03-2007 à 14:58:21  profilanswer
 

Bah bien sûr ca continue à planter, ca résoud pas encore tes erreurs [:magicbuzz]
 
A la ligne ou ca plante, vérifie la valeur des variables en jeu, et vois si ca te parait cohérent.


---------------
Töp of the plöp
n°1532828
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-03-2007 à 14:59:30  profilanswer
 

Anarchne a écrit :

Bonjour.
J'ai un problème avec mon programme d'annuaire et je n'arrive pas à voir où sa cloche.
Le voilà:


Comportement indéfini :  


Compiling: main.c
main.c: In function `afficher':
main.c:92: warning: passing arg 1 of `strlen' from incompatible pointer type
main.c: At top level:
main.c:157: warning: function declaration isn't a prototype
Linking console executable: console.exe
Process terminated with status 0 (0 minutes, 9 seconds)
0 errors, 2 warnings


 
http://mapage.noos.fr/emdel/codage.htm#cfg_compilo


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1532845
Anarchne
Posté le 23-03-2007 à 15:10:31  profilanswer
 

comment sa c'est pas un  prototype?
Au secour là!!!
 
Le strlen c'est pas très grave je peux le changer.
C'est pas à cause de sa que sa plante.
C'est au niveau du """" gets(p[i]->nom);  """"  de ma fonction ajouter.
Au fait quand je fais un debug j'ajoute i p[i] et p[i]->nom comme variables et il ne les affichent jamais!!!!
Au secour bis!!!

n°1533153
Anarchne
Posté le 24-03-2007 à 13:46:21  profilanswer
 

up.

n°1533174
Ayuget
R.oger
Posté le 24-03-2007 à 14:50:53  profilanswer
 

Code :
  1. tab[i]=(personne*)malloc(sizeof(personne));
  2. tab[i]=NULL;


 
Tu comprends ce que tu fais là?

n°1533260
Siluro
Posté le 24-03-2007 à 21:10:48  profilanswer
 

Je pense qu'il veut l'initialiser mais il l'a mal fait  [:hello_cass]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  aide pour creation annuaire (débutant)

 

Sujets relatifs
[MATLAB] aide pour ecrire dans un fichierdemande d'aide pour créer une interface pour modification sur un site
Aide : Connexion J2EE / MysqlBase de données préalable création logiciel et site internet
Aide sur un ALGOa l'aide d'une liste box comment on peux acceder a la page selectionné
aide pour mes débuts en VBavoir un renseignement sur création de menu via mysql..
script csh besoin d'aide pour lire x lignesShell aide sur mon script
Plus de sujets relatifs à : aide pour creation annuaire (débutant)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR