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

  FORUM HardWare.fr
  Programmation
  C

  Afficher le contenu d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher le contenu d'un fichier

n°1337978
MAD_DIM
Posté le 03-04-2006 à 17:07:04  profilanswer
 

Bonjour,
 
Voila, je crée un fichier qui contient des informations sur des membres d'un club et pour éviter de tout le temps accéder au fichier, je crée un index qui contient le nom et le numero de la personne pour faire mes recherche en vue de modifier ou supprimer un enregistrements.
Au depart le fichier est "bidonné", et ne contient rien
Le probleme vient de ma fonction Creation_index, le programme plante tout simplement... On dirait qu'il ne trouve pas ce qu'il y a dans mon fichier mais pourtant il est remplit et je ne pense pas avoir fait d'erreur d'appel de fonctiopn de fichier.
Lorsque je vais dans le debugger VisualC++ il me dit que l'expression ne peut etre évaluer
 
Voici la fonction Creation_index
 

Code :
  1. void Creation_index(struct MEMBRE *mbr, struct INDEX *ind)
  2. {
  3. FILE *fp;
  4. int i;
  5. fp = fopen("membre.dat", "r+b" );                            ouvre le fichier
  6. fread(mbr, sizeof(struct MEMBRE), 100, fp);         lit les 100 enregistrements
  7. for(i=0;i<100;i++)
  8. {
  9.   strcpy(ind->nom, mbr->nom);                                  place dans l index le nom trouver dans le fichier
  10.   ind->numlicense = mbr->numlicense;                     le num de la personne
  11.   ind->position = i;
  12.   ind ++;
  13.   mbr++;
  14. }
  15. fclose(fp);


Et voila ma fonction Affiche
 

Code :
  1. void Listage_fichier(struct INDEX *ind, struct MEMBRE *mbr)
  2. {
  3. FILE *fp;
  4. int nbenreg = 0;
  5. system("cls" );
  6. fp = fopen("membre.dat", "r+b" ) ;
  7. if(fp == NULL)
  8. {
  9.   printf("ERREUR\n" );
  10. }
  11. else
  12. {
  13.   fread(mbr, sizeof(struct MEMBRE), 100, fp);
  14.   printf("\n                            LISTE DES MEMBRES\n" );
  15.   printf("                            -----------------\n\n" );
  16.   do
  17.   {
  18.    if(strcmp(ind->nom, " " ) != 0)                        c'est ici que l 'erreur se produit 
  19.    {
  20.     printf("%d %s %s %d/%d/%d\n", ind->numlicense, mbr->nom, mbr->prenom, mbr->nais.jour, mbr->nais.mois, mbr->nais.annee, mbr->sexe);
  21.    }
  22.    mbr++;
  23.    ind++;
  24.    nbenreg++;
  25.   }while(nbenreg < 100);
  26. }
  27. fclose(fp);
  28. printf("\nAppuyer sur une touche pour continuer..." );
  29. getch();


 
Merci

Message cité 1 fois
Message édité par MAD_DIM le 03-04-2006 à 17:21:53
mood
Publicité
Posté le 03-04-2006 à 17:07:04  profilanswer
 

n°1337984
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-04-2006 à 17:10:53  profilanswer
 

Balises code STP...

MAD_DIM a écrit :


Code :
  1. void Creation_index(struct MEMBRE *mbr, struct INDEX *ind)
  2. {
  3. FILE *fp;
  4. int i;
  5. fp = fopen("membre.dat", "r+b" );                            ouvre le fichier
  6. fread(mbr, sizeof(struct MEMBRE), 100, fp);         lit les 100 enregistrements




Et si fp vaut NULL ? Pourquoi "r+b" et non "wb" ?


---------------
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°1337998
MAD_DIM
Posté le 03-04-2006 à 17:20:45  profilanswer
 

Mon programme oblige, si il n'y en a pas, la creation d'un fichier avant ca mais je n'ai pas mit toute la source.
Mais c'est vrai que je devrai le verifier aussi au cas ou il y aurait un probleme meme si le fichier est creer

Message cité 1 fois
Message édité par MAD_DIM le 03-04-2006 à 17:23:02
n°1338004
Taz
bisounours-codeur
Posté le 03-04-2006 à 17:25:42  profilanswer
 

fread(mbr, sizeof(struct MEMBRE), 100, fp);
 
tu ferais bien regarder le retour de fread toi !

n°1338008
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-04-2006 à 17:27:37  profilanswer
 

MAD_DIM a écrit :

Mon programme oblige, si il n'y en a pas, la creation d'un fichier <...>


C'est toi qui dit que ça plante (sans préciser où ni comment...)


Message édité par Emmanuel Delahaye le 03-04-2006 à 17:28:12

---------------
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°1338043
MAD_DIM
Posté le 03-04-2006 à 17:57:18  profilanswer
 

Taz: J'ai vérifier le retour de fread et il est de 100
 
Le programme plante au moment ou je veus afficher les membres contenu dans mon fichier


Message édité par MAD_DIM le 03-04-2006 à 17:58:21
n°1338117
Trap D
Posté le 03-04-2006 à 19:20:13  profilanswer
 

Dans ta structure, tu as prévu le 0 terminal pour ind->nom ? puisque c'est là que ça plante ?Il manque des détails sur la structure MEMBRE

n°1338137
Taz
bisounours-codeur
Posté le 03-04-2006 à 19:46:11  profilanswer
 

comment t'alloue mbr ?

n°1338161
MAD_DIM
Posté le 03-04-2006 à 20:14:43  profilanswer
 

Voila ma source complète.
J'ai mit des commentaire, j'espère qu'il y en a assez
 

Code :
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<ctype.h>
  5. #include<conio.h>
  6. #include<windows.h>
  7. void Creation_fichier(struct MEMBRE *);
  8. void Listage_fichier(struct INDEX *, struct MEMBRE *);
  9. struct INDEX* Recherche_fichier(struct INDEX *, char *);
  10. void Creation_index(struct MEMBRE *, struct INDEX *);
  11. void Ajout_fichier(struct MEMBRE *, struct INDEX *, char *);
  12. void Supprimer_fichier(struct MEMBRE *, struct INDEX *, char *);
  13. void Modif_fichier(struct MEMBRE *, struct INDEX *, char *);
  14. struct DATTE { int jour;
  15.               int mois;
  16.     int annee;
  17. };
  18. struct MEMBRE { int numlicense;
  19.    char nom[20];
  20.    char prenom[20];
  21.    char sexe;
  22.    struct DATTE nais;
  23. };
  24. struct INDEX { int numlicense;
  25.                char nom[20];
  26.      int position;
  27. };
  28. void main()
  29. {
  30. FILE *fp;
  31. struct MEMBRE *mbr;                /* Pointeur de la structure MEMBRE */
  32. struct MEMBRE membre[100];         /* Taille de la structure MEMBRE */
  33. struct INDEX *ind;                 /* Pointeur de la structure INDEX */
  34. struct INDEX index[100];           /* Taille de la structure INDEX */
  35. int choix, i;
  36. char mot[20], *pt;                 /* pt reçoit soit une chaîne vide ou un nom */
  37. char login[] = {"admin"};          /* Mot de passe pour écraser le fichier */
  38. char pass[] =  {"1234"};
  39. char log[20], password[20];       
  40. bool fin, admin;
  41. mbr = &membre[0];
  42. ind = &index[0];
  43. fp = fopen("membre.dat", "r+b" );
  44. /* Vérifie si un fichier existe ou non */
  45. if(fp == NULL)
  46. {
  47.  printf("Creation du fichier\n" );
  48.  getch();
  49.  /* Si non on crée le fichier et son index */
  50.  Creation_fichier(mbr);
  51.  Creation_index(mbr, ind);
  52. }
  53. else
  54. {
  55.  /* On crée l'index à chaque lancement de programme */
  56.  Creation_index(mbr, ind);
  57. }
  58. do
  59. {
  60.  fin = false;
  61.  admin = false;
  62.  system("cls" );
  63.  printf("\n                              MENU\n" );
  64.  printf("                              ----\n\n" );
  65.  printf("                     1. Afficher membres\n" );
  66.  printf("                     2. Ajouter un membre\n" );
  67.  printf("                     3. Modifier une fiche\n" );
  68.  printf("                     4. Supprimer un membre\n" );
  69.  printf("                     5. Option\n" );
  70.  printf("                     6. Quitter\n" );
  71.  printf("\n                Choix : " );
  72.  fflush(stdin);
  73.  scanf("%d", &choix);
  74.  switch(choix)
  75.  {
  76.  case 1:
  77.   /* Affiche les membres */
  78.   Listage_fichier(ind, mbr);
  79.   break;
  80.  case 2:
  81.   /* Ajouter un nouveau membre */
  82.   system("cls" );
  83.   pt = " ";
  84.   Ajout_fichier(mbr, ind, pt);
  85.   break;
  86.  case 3:
  87.   /* Permet d'apporter des changememnts à une fiche */
  88.   system("cls" );
  89.   printf("\n                          MODIFICATION DE MEMBRES\n" );
  90.   printf("                          ----------------------\n\n" );
  91.   printf("Entrez le nom du membre a modifier : " );
  92.   fflush(stdin);
  93.   gets(mot);
  94.   pt = mot;
  95.   Modif_fichier(mbr, ind, pt);
  96.   break;
  97.  case 4:
  98.   /* Supprimer un membre */
  99.   system("cls" );
  100.   printf("\n                          SUPPRESSION DE MEMBRES\n" );
  101.   printf("                          ----------------------\n\n" );
  102.   printf("Entrez le nom du membre a effacer : " );
  103.   fflush(stdin);
  104.   gets(mot);
  105.   pt = mot;
  106.   Supprimer_fichier(mbr, ind, pt);
  107.   break;
  108.  case 5:
  109.   /* Permet de créer un nouveau fichier  (écrase l'ancien) */
  110.   i=0;
  111.   do
  112.   {
  113.    system("cls" );
  114.    printf("\n\n                     VEUILLEZ VOUS IDENTIFIER !!!\n\n\n" );
  115.    printf("               * LOGIN : " );
  116.    fflush(stdin);
  117.    gets(log);
  118.    printf("\n               * PASSWORD : " );
  119.    fflush(stdin);
  120.    gets(password);
  121.    if((strcmp(log, login) == 0) && (strcmp(password, pass) == 0))
  122.    {
  123.     admin = true;
  124.     printf("Creation d un nouveau fichier\n" );
  125.     Creation_fichier(mbr);
  126.     Creation_index(mbr, ind);
  127.    }
  128.    else
  129.    {
  130.     printf("\n\n                     ERREUR D AUTENTIFICATION !!!" );
  131.     Sleep(1000);
  132.    }
  133.    i++;
  134.   }while(admin == false && i<3);
  135.   break;
  136.  default:
  137.   fin = true;
  138.   break;
  139.  }
  140. }while(fin != true);
  141. }
  142. /******************************************************************/
  143. /*                 FONCTION QUI REMPLIT LE FICHIER                */
  144. /******************************************************************/
  145. void Creation_fichier(struct MEMBRE *mbr)
  146. {
  147. FILE *fp;
  148. system("cls" );
  149. fp = fopen("membre.dat", "w+b" );
  150. if(fp == NULL)
  151. {
  152.  printf("Erreur\n" );
  153. }
  154. else
  155. {
  156.  /* Bidonnage du fichier */
  157.  mbr->numlicense = -1;
  158.  strcpy(mbr->nom, " " );
  159.  strcpy(mbr->prenom, " " );
  160.  mbr->sexe = ' ';
  161.  mbr->nais.jour = 0;
  162.  mbr->nais.mois = 0;
  163.  mbr->nais.annee = 0;
  164.  /* On copie la structure 100 fois dans le fichier */
  165.  fwrite(mbr, sizeof(struct MEMBRE), 100, fp);
  166. }
  167. fclose(fp);
  168. }
  169. /****************************************************************/
  170. /*         FONCTION QUI AFFICHE LE CONTENU DU FICHIER           */
  171. /****************************************************************/
  172. void Listage_fichier(struct INDEX *ind, struct MEMBRE *mbr)
  173. {
  174. FILE *fp;
  175. int nbenreg = 0;
  176. system("cls" );
  177. fp = fopen("membre.dat", "r+b" );
  178. if(fp == NULL)
  179. {
  180.  printf("ERREUR\n" );
  181. }
  182. else
  183. {
  184.  /* Transfert le contenu du fichier dans "mbr" */
  185.  fread(mbr, sizeof(struct MEMBRE), 100, fp);
  186.  printf("\n                            LISTE DES MEMBRES\n" );
  187.  printf("                            -----------------\n\n" );
  188.  do
  189.  {
  190.   /* Vérifie si l'index contient un nom */
  191.   if(strcmp(ind->nom, " " ) != 0)
  192.   {
  193.    /* Si oui on affiche */
  194.    printf("%d %s %s %d/%d/%d\n", ind->numlicense, mbr->nom, mbr->prenom, mbr->nais.jour, mbr->nais.mois, mbr->nais.annee, mbr->sexe);
  195.   }
  196.   mbr++;
  197.   ind++;
  198.   nbenreg++;
  199.  }while(nbenreg < 100);
  200. }
  201. fclose(fp);
  202. printf("\nAppuyer sur une touche pour continuer..." );
  203. getch();
  204. }
  205. /***********************************************************************************/
  206. /*         FONCTION QUI PERMET DE RECHERCHER UN EMPLACEMENT VIDE OU UN NOM         */
  207. /***********************************************************************************/
  208. struct INDEX* Recherche_fichier(struct INDEX *ind, char *pt)
  209. {
  210. int i;
  211. bool trouve = false;
  212. i = 0;
  213. while(i<100 && trouve != true)
  214. {
  215.  if(strcmp(ind->nom, pt) == 0)
  216.  {
  217.   trouve = true;
  218.  }
  219.  else
  220.  {
  221.   i++;
  222.   ind++;
  223.  }
  224. }
  225. /* Retourne le pointeur de la structure index */
  226. return(ind);
  227. }
  228. /************************************************************/
  229. /*              FONCTION QUI REMPLIT L INDEX                */
  230. /************************************************************/
  231. void Creation_index(struct MEMBRE *mbr, struct INDEX *ind)
  232. {
  233. FILE *fp;
  234. int i;
  235. fp = fopen("membre.dat", "r+b" );
  236. fread(mbr, sizeof(struct MEMBRE), 100, fp);
  237. for(i=0;i<100;i++)
  238. {
  239.  /* Copie les différents champs du fichier dans la structure index */
  240.  strcpy(ind->nom, mbr->nom);
  241.  ind->numlicense = mbr->numlicense;
  242.  ind->position = i;
  243.  ind ++;
  244.  mbr++;
  245. }
  246. fclose(fp);
  247. }
  248. /**************************************************************/
  249. /*                 FONCTION AJOUTER UN MEMBRE                 */
  250. /**************************************************************/
  251. void Ajout_fichier(struct MEMBRE *mbr, struct INDEX *ind, char *pt)
  252. {
  253. FILE *fp;
  254. /* Retourne la position du premier emplacement vide */
  255. ind = Recherche_fichier(ind, pt);
  256. fp = fopen("membre.dat", "r+b" );
  257. /* On se déplace dans le fichier a la position voulue */
  258. fseek(fp, (ind->position) * (sizeof(struct MEMBRE)), SEEK_SET);
  259. printf("\n                          AJOUT DE MEMBRES\n" );
  260. printf("                          ----------------\n\n" );
  261. printf(" * Entrez le numero de license :" );
  262. fflush(stdin);
  263. scanf("%d", &mbr->numlicense);
  264. ind->numlicense = mbr->numlicense;
  265. printf(" * Entrez le nom :" );
  266. fflush(stdin);
  267. gets(mbr->nom);
  268. strcpy(ind->nom, mbr->nom);
  269. printf(" * Entrez le prenom :" );
  270. fflush(stdin);
  271. gets(mbr->prenom);
  272. printf(" * Entrez le jour :" );
  273. fflush(stdin);
  274. scanf("%d", &mbr->nais.jour);
  275. printf(" * Entrez le mois :" );
  276. fflush(stdin);
  277. scanf("%d", &mbr->nais.mois);
  278. printf(" * Entrez l annee :" );
  279. fflush(stdin);
  280. scanf("%d", &mbr->nais.annee);
  281. printf(" * Entrez le sexe du membre :" );
  282. fflush(stdin);
  283. scanf("%c", &mbr->sexe);
  284. /* Ecriture dans le fichier */
  285. fwrite(mbr, sizeof(struct MEMBRE), 1, fp);
  286. fclose(fp);
  287. }
  288. /*****************************************************************/
  289. /*               FONCTION SUPPRIMER UN MEMBRE                    */
  290. /*****************************************************************/
  291. void Supprimer_fichier(struct MEMBRE *mbr, struct INDEX *ind, char *pt)
  292. {
  293. FILE *fp;
  294. /* Retourne la position du nom du membre à effacer */
  295. ind = Recherche_fichier(ind, pt);
  296. fp = fopen("membre.dat", "r+b" );
  297. /* On se déplace dans le fichier à l'endroit voulut */
  298. fseek(fp, (ind->position) * (sizeof(struct MEMBRE)), SEEK_SET);
  299. /* Lit le fichier pour afficher le membre que l'on va supprimer */
  300. fread(mbr, sizeof(struct MEMBRE), 1, fp);
  301. printf("%d %s %s %d/%d/%d\n", ind->numlicense, mbr->nom, mbr->prenom, mbr->nais.jour, mbr->nais.mois, mbr->nais.annee, mbr->sexe);
  302. printf("Appuyer sur une touche pour supprimer cette element ..." );
  303. getch();
  304. /* On remet tout à null */
  305. strcpy(mbr->nom, " " );
  306. strcpy(ind->nom, mbr->nom);
  307. strcpy(mbr->prenom, " " );
  308. mbr->sexe = ' ';
  309. mbr->nais.jour = 0;
  310. mbr->nais.mois = 0;
  311. mbr->nais.annee = 0;
  312. fclose(fp);
  313. fopen("membre.dat", "r+b" );
  314. /* On se repositionne pour écrire dans le fichier */
  315. fseek(fp, (ind->position) * (sizeof(struct MEMBRE)), SEEK_SET);
  316. fwrite(mbr, sizeof(struct MEMBRE), 1, fp);
  317. fclose(fp);
  318. }
  319. /*******************************************************************/
  320. /*                   FONCTION MODIFIER UNE FICHE                   */
  321. /*******************************************************************/
  322. void Modif_fichier(struct MEMBRE *mbr, struct INDEX *ind, char *pt)
  323. {
  324. FILE *fp;
  325. /* Retourne la position du nom du membre à modifier */
  326. ind = Recherche_fichier(ind, pt);
  327. printf("\n                                 MODIFICATION\n" );
  328. printf("                                 ------------\n\n" );
  329. fp = fopen("membre.dat", "r+b" );
  330. /* On se place à l'endroit voulut dans le fichier */
  331. fseek(fp, (ind->position)*(sizeof(struct MEMBRE)), SEEK_SET);
  332. fread(mbr, sizeof(struct MEMBRE), 1, fp);
  333. printf("%d %s %s %d/%d/%d\n", mbr->numlicense, mbr->nom, mbr->prenom, mbr->nais.jour, mbr->nais.mois, mbr->nais.annee, mbr->sexe);
  334. printf(" * Entrez le numero de license :" );
  335. fflush(stdin);
  336. scanf("%d", &mbr->numlicense);
  337. printf(" * Entrez le nom :" );
  338. fflush(stdin);
  339. gets(mbr->nom);
  340. printf(" * Entrez le prenom :" );
  341. fflush(stdin);
  342. gets(mbr->prenom);
  343. printf(" * Entrez le jour :" );
  344. fflush(stdin);
  345. scanf("%d", &mbr->nais.jour);
  346. printf(" * Entrez le mois :" );
  347. fflush(stdin);
  348. scanf("%d", &mbr->nais.mois);
  349. printf(" * Entrez l annee :" );
  350. fflush(stdin);
  351. scanf("%d", &mbr->nais.annee);
  352. printf(" * Entrez le sexe du membre :" );
  353. fflush(stdin);
  354. scanf("%c", &mbr->sexe);
  355. fclose(fp);
  356. fp = fopen("membre.dat", "r+b" );
  357. fseek(fp, (ind->position)*(sizeof(struct MEMBRE)), SEEK_SET);
  358. /* Ecriture dans le fichier de la fiche modifier */
  359. fwrite(mbr, sizeof(struct MEMBRE), 1, fp);
  360. fclose(fp);
  361. }

n°1338207
breizhbugs
Posté le 03-04-2006 à 21:17:48  profilanswer
 

Salut,
Dans la fonction "creation fichier", tu creer 1 enregistrement
Dans la fonction "creation index" qui suit juste apres, tu lis 100 enregistrement et tu cherche a y acceder (ind ++?) alors qu'il n'y en a que 1?
(ou alors j'ai pas capté qqch!)

mood
Publicité
Posté le 03-04-2006 à 21:17:48  profilanswer
 

n°1338234
Sve@r
Posté le 03-04-2006 à 21:55:42  profilanswer
 

Quelques détails "en vrac"
 

MAD_DIM a écrit :

Code :
  1. void main()



main est de type "int"
 

MAD_DIM a écrit :

Code :
  1. char login[] = {"admin"}



Une chaîne, c'est soit

Code :
  1. char login[]={'a', 'd', 'm', 'i', 'n', 0}

, soit

Code :
  1. char login[]="admin"


Là, tu asignes un tableau de chaînes (tableau de tableaux) dans un tableau de caractères...
 

MAD_DIM a écrit :

Code :
  1. mbr = &membre[0]



Oui... ou plus simplement "&membre[0]" s'écrit plus simplement "membre"...
 

MAD_DIM a écrit :

Code :
  1. if(fp == NULL)
  2. {
  3.  printf("Creation du fichier\n" );
  4.  getch();
  5.  /* Si non on crée le fichier et son index */
  6.  Creation_fichier(mbr);
  7.  Creation_index(mbr, ind);
  8. }
  9. else
  10. {
  11.  /* On crée l'index à chaque lancement de programme */
  12.  Creation_index(mbr, ind);
  13. }



La fonction "Creation_index" est appelée dans le "then" et dans le "else" => elle n'a rien à faire dans le "if"...
 

MAD_DIM a écrit :

Code :
  1. bool trouve = false



le type "bool" n'existe pas en C. Tu mélanges pas C et C++ ???
 

MAD_DIM a écrit :

Code :
  1. while(i<100 && trouve != true)
  2. {
  3.  if(strcmp(ind->nom, pt) == 0)
  4.  {
  5.   trouve = true;
  6.  }
  7.  else
  8.  {
  9.   i++;
  10.   ind++;
  11.  }
  12. }



C'est parfaitement conforme aux règles de la programmation structurée qu'on enseigne à l'école (tout à ton honneur) mais pachydermiquement lourd à programmer. Utilises-donc un peu les "break" et "continue", tu gagneras en simplicité de code sans pour autant être aussi "porc" que ce que c'est écrit dans les manuels...

Code :
  1. while(i<100)
  2. {
  3. if (strcmp(ind->nom, pt) == 0)
  4.  break;
  5. i++;
  6. ind++;
  7. }


 
On peut écrire la même chose en une ligne... mais là ça devient limite pour se relire 6 mois après...

Code :
  1. for (i=0, ind=0; i < 100 && strcmp(ind->nom, pt) != 0; i++, ind++);


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1338274
Taz
bisounours-codeur
Posté le 03-04-2006 à 23:01:01  profilanswer
 

#
   printf(" * Entrez le prenom :" );
#
    fflush(stdin);
#
    gets(mbr->prenom);
 
 
 
ultivement mauvais.
 
printf(" * Entrez le prenom :" );
fflush(stdout);
fgets(mbr->person, sizeof mbr->person, stdin); /* il faudrait vérifier que  ça ne renvoit pas NULL */

n°1338386
Emmanuel D​elahaye
C is a sharp tool
Posté le 04-04-2006 à 09:30:25  profilanswer
 

Taz a écrit :

printf(" * Entrez le prenom :" );
fflush(stdout);
fgets(mbr->person, sizeof mbr->person, stdin); /* il faudrait vérifier que  ça ne renvoit pas NULL */



et se débarasser proprement du '\n'...
 


---------------
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°1338456
MAD_DIM
Posté le 04-04-2006 à 10:33:14  profilanswer
 

Salut,
 
Dejà un grand merci pour votre aide....
J'ai résolu le problème de plantage (il faut enlever le "mbr++" dans la fonction "Creation_index" ) mais il me reste un petit problème.
Je lance mon programme, le fichier se crée, l'index aussi, j'ajoute, je supprimme, je modifie tout va bien.
Ensuite je quitte, puis je relance mon programme et la je veux afficher les membres mais il m'affiche toute sorte de caractere a l'écran ???
 
Sve@r:
La fonction Creation_index est appelé dans le "if" si le fichier n'existe pas mais elle est aussi appelé dans le "else" car j' en ai besoin pour travailler
 

n°1338476
MAD_DIM
Posté le 04-04-2006 à 10:52:21  profilanswer
 

Finalement si on enléve le "mbr++" ca ne marche pas non plus car il me recopie 100 fois dans l'index le meme nom et numlicense ;(

n°1338898
MAD_DIM
Posté le 04-04-2006 à 16:20:13  profilanswer
 

Problème résolut
 
MERCI BEAUCOUP

n°1341041
Sve@r
Posté le 06-04-2006 à 22:54:16  profilanswer
 

MAD_DIM a écrit :

Sve@r:
La fonction Creation_index est appelé dans le "if" si le fichier n'existe pas mais elle est aussi appelé dans le "else" car j' en ai besoin pour travailler


 
Ben justement elle n'a rien à faire dans les deux alternatives et doit être sortie du if
 
Au lieu d'écrire

Code :
  1. if(fp == NULL)
  2. {
  3.         /* Si non on crée le fichier et son index */
  4.         printf("Creation du fichier\n" );
  5.         getch();
  6.         Creation_fichier(mbr);
  7.         Creation_index(mbr, ind);
  8. }
  9. else
  10. {
  11.         /* On crée l'index à chaque lancement de programme */
  12.         Creation_index(mbr, ind);
  13. }


Tu écris

Code :
  1. if(fp == NULL)
  2. {
  3.         /* Si non on crée le fichier */
  4.         printf("Creation du fichier\n" );
  5.         getch();
  6.         Creation_fichier(mbr);
  7. }
  8. /* On crée l'index à chaque lancement de programme */
  9. Creation_index(mbr, ind);



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1341226
Brisefer_2​2
Posté le 07-04-2006 à 10:21:09  profilanswer
 

Si le fichier existe il créera l'index de toute manière donc ce que dit Sv@er est juste


Message édité par Brisefer_22 le 07-04-2006 à 10:23:03

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

  Afficher le contenu d'un fichier

 

Sujets relatifs
Découper un fichier audiocomment je peux créé un fichier éxécutable svp
copier le résultat d'une commande dans un fichierAfficher le contenu d'un fichier texte sur une page WEB ?
Afficher le contenu d'1 fichier XML dans un flash - Master NooB insideAfficher le contenu d'un fichier sur une page html
afficher le contenu d'un fichier sur un listbox ou messagebox[PHP] afficher le contenu d'un fichier texte
[Java] Afficher le contenu d'un fichier texte dans une fenêtre ?Afficher le contenu d'un fichier Excel dans site web (ss chrger Excel)
Plus de sujets relatifs à : Afficher le contenu d'un fichier


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