Afficher le contenu d'un fichier

Afficher le contenu d'un fichier - C - Programmation

Marsh Posté le 03-04-2006 à 17:07:04    

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
Reply

Marsh Posté le 03-04-2006 à 17:07:04   

Reply

Marsh Posté le 03-04-2006 à 17:10:53    

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/
Reply

Marsh Posté le 03-04-2006 à 17:20:45    

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
Reply

Marsh Posté le 03-04-2006 à 17:25:42    

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

Reply

Marsh Posté le 03-04-2006 à 17:27:37    

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/
Reply

Marsh Posté le 03-04-2006 à 17:57:18    

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
Reply

Marsh Posté le 03-04-2006 à 19:20:13    

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

Reply

Marsh Posté le 03-04-2006 à 19:46:11    

comment t'alloue mbr ?

Reply

Marsh Posté le 03-04-2006 à 20:14:43    

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. }

Reply

Marsh Posté le 03-04-2006 à 21:17:48    

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!)

Reply

Marsh Posté le 03-04-2006 à 21:17:48   

Reply

Marsh Posté le 03-04-2006 à 21:55:42    

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.
Reply

Marsh Posté le 03-04-2006 à 23:01:01    

#
   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 */

Reply

Marsh Posté le 04-04-2006 à 09:30:25    

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/
Reply

Marsh Posté le 04-04-2006 à 10:33:14    

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
 

Reply

Marsh Posté le 04-04-2006 à 10:52:21    

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 ;(

Reply

Marsh Posté le 04-04-2006 à 16:20:13    

Problème résolut
 
MERCI BEAUCOUP

Reply

Marsh Posté le 06-04-2006 à 22:54:16    

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.
Reply

Marsh Posté le 07-04-2006 à 10:21:09    

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
Reply

Sujets relatifs:

Leave a Replay

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