Afficher le contenu d'un fichier - C - Programmation
Marsh Posté le 03-04-2006 à 17:10:53
Balises code STP...
MAD_DIM a écrit :
|
Et si fp vaut NULL ? Pourquoi "r+b" et non "wb" ?
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
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 !
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...)
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
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
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 :
|
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!)
Marsh Posté le 03-04-2006 à 21:55:42
Quelques détails "en vrac"
MAD_DIM a écrit :
|
main est de type "int"
MAD_DIM a écrit :
|
Une chaîne, c'est soit
Code :
|
, soit
Code :
|
Là, tu asignes un tableau de chaînes (tableau de tableaux) dans un tableau de caractères...
MAD_DIM a écrit :
|
Oui... ou plus simplement "&membre[0]" s'écrit plus simplement "membre"...
MAD_DIM a écrit :
|
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 :
|
le type "bool" n'existe pas en C. Tu mélanges pas C et C++ ???
MAD_DIM a écrit :
|
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 :
|
On peut écrire la même chose en une ligne... mais là ça devient limite pour se relire 6 mois après...
Code :
|
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 */
Marsh Posté le 04-04-2006 à 09:30:25
Taz a écrit :
|
et se débarasser proprement du '\n'...
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
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 ;(
Marsh Posté le 06-04-2006 à 22:54:16
MAD_DIM a écrit : Sve@r: |
Ben justement elle n'a rien à faire dans les deux alternatives et doit être sortie du if
Au lieu d'écrire
Code :
|
Tu écris
Code :
|
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
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
Et voila ma fonction Affiche
Merci
Message édité par MAD_DIM le 03-04-2006 à 17:21:53