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

  FORUM HardWare.fr
  Programmation
  C

  Aide programmation C !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide programmation C !!!

n°2121302
Satya31
Posté le 14-01-2012 à 11:53:24  profilanswer
 

bonjour j'ai besoin de conseil car je bloque en ce moment  :sweat:  
 
J'essaie de crée un code permettant la saisie dans un fichier "Annuaire" (fichier texte) des donnée tel que nom, prenom, tel ... en faisant un contact par ligne . La saisie du nom est obbligatoire
 

Code :
  1. typedef struct{
  2.     int n;
  3.     int thai;
  4.     char * Nom[thai]; // Ce champ est obligatoire
  5.     char * Prenom[thai];
  6.     char * Societe[thai];
  7.     int * TelFixe[15];
  8.     int * TelPro[15];
  9.     int * TelPerso[thai];
  10.     char * CodePostale[5];
  11.     char * AdresseRue[3];
  12.     char * Ville[thai];
  13.     char * AdresseMailPro[thai];
  14.     char * AdresseMailPerso[thai];
  15.     int * DateNaiss[8]: // sous la forme JJMMAAAA
  16.      thai= malloc(n*sizeof(char)); // pour réserver de la place en fonction de ce qui a été envoyer par le client
  17.     if (Nom!=NULL)
  18.        {
  19.             printf("Veuillez saisir votre nom\n" ),Nom;
  20.             printf("Veuillez saisir votre prenom\n" ),Prenom;
  21.             printf("Veuillez saisir le nom de votre société\n" ),Societe;
  22.             printf("Taper votre numéro de telephone Fixe\n" ),TelFixe;
  23.             printf("Taper votre numéro de telephone personnel\n" ),TelPerso;
  24.             printf("Taper votre numéro de telephone profesionnel\n" ),TelPro;
  25.             printf("Veuillez saisir votre numéro de code postal\n" ),CodePostal;
  26.             printf("Veuillez saisir votre numéro de rue\n" ),AdresseRue;
  27.             printf("Veuillez saisir le nom de votre ville\n" ),Ville;
  28.             printf("Veuillez saisir votre adresse e-mail Professionnelle \n" ),AdresseMailPro;
  29.             printf("Veuillez saisir votre adresse e-mail Personnelle \n" ),AdresseMailPerso;
  30.             printf("Veuillez saisir votre date de naissance \n" ),DateNAiss;
  31.         }
  32.     else
  33.         {
  34.             printf(" Le champ nom est obligatoire" );
  35.         }
  36.     free(thai);
  37. }contact;


 
Comme je ne connait pas la valeur que le client va saisir j'ai fait un malloc !
 
de plus dans ce même fichier "Annuaire" je veut chercher une personne et l'afficher (donc je cherche une ligne!)

Code :
  1. //On cherche un contact dans notre annuaire et on l'affiche
  2. int SearchContact(char nom, char prenom){
  3.     FILE *Annuaire;
  4. //concatenation nom_prenom
  5.     char st1[] = nom;
  6.     char st2[] = prenom;
  7.     char st3[] = "/n";
  8.     strcat(st1, st3);
  9.     strcat(st1, st2);
  10.     Annuaire=fopen(st1,"r+" );
  11.     if(Annuaire==NULL){
  12.         printf("Le fichier n'existe pas !!\n" );
  13.         Emission("Le contact recherché n'existe pas !!\n" );
  14.         return 1;
  15.     }else{
  16.         caractere = fgetc(Annuaire);
  17.         while (caractere != EOF){
  18.             if(caractere=='$'){
  19.                 Emission("\n" );
  20.             }else{
  21.                 Emission(caractere);
  22.                 caractere = fgetc(Annuaire);
  23.             }
  24.         }
  25.     }
  26.     fclose(Annuaire);
  27.     return 0;
  28. }


 
 
 
Mais cela ne fonctionne pas !!!
 
Merci d'avance
 
 

mood
Publicité
Posté le 14-01-2012 à 11:53:24  profilanswer
 

n°2121305
gilou
Modérateur
Modzilla
Posté le 14-01-2012 à 12:31:00  profilanswer
 

Citation :

int thai;
char * Nom[thai];


Ce genre de chose n'est pas possible en C
Il faut faire
int thai;
char * Nom;
 
et plus tard, lorsque la valeur de thai est connue, allouer le tableau
Nom = malloc(thai);
 
Pour le reste, c'est trop bourré d'erreur pour que quoi que ce soit marche, a commencer par le  thai= malloc(n*sizeof(char));  qui ne veut rien dire, et qui a un sizeof(char) inutile.
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2121321
Trap D
Posté le 14-01-2012 à 14:34:15  profilanswer
 

Nom = malloc(thai+1) peut-être ?

n°2121325
gilou
Modérateur
Modzilla
Posté le 14-01-2012 à 14:50:50  profilanswer
 

Ça, ca va dépendre de ses données.
Ça peut très bien être la valeur max pour un format de stockage, et les opérations de lectures peuvent en tenir compte.
Sans plus d'info sur le modèle de données, autant rester dans le général.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2121378
Sve@r
Posté le 14-01-2012 à 19:23:15  profilanswer
 

gilou a écrit :

Citation :

int thai;
char * Nom[thai];


Ce genre de chose n'est pas possible en C


Salut
 
Il me semble avoir lu quelque part que c'est autorisé dans la dernière version.
Quelqu'un peut confirmer ???

n°2121381
gilou
Modérateur
Modzilla
Posté le 14-01-2012 à 19:42:15  profilanswer
 

Sauf que la ça marchera pas.
Il faut que thai puisse être évalué avant l'allocation de l'array, et la, thai a seulement été déclaré, et pas initialisé.
 
Ca se fait depuis le C99 avec les Variable Length Arrays (ou VLA).
http://drdobbs.com/184401444
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  Aide programmation C !!!

 

Sujets relatifs
[C]Ne trouve pas le fichier Delays.h[C] MLX: Acceder aux différents octets d'un unsigned long
Aide pour un script cashDans votre job, est ce que vous appliquez des "concepts" du C++ ?
erreur besoin d'aide[C] Swaper les maillons d'une liste chainees ! Help
[C] problème de fichiersProgrammation en C, besoin d'aide
Aide Programmation C ArgumentsDemande d'aide pour programmation en C
Plus de sujets relatifs à : Aide programmation C !!!


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