[c] Problème d'écriture dans un fichier

Résolu
oliobs Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour/Bonsoir,

Je suis étudiant en première informatique de gestion et dans une semaine, je dois rendre mon projet de fin d'année. Qui consiste à créer un logiciel en langage C permettant de réaliser la gestion d'une base de données de jeux/joueurs/parties jouées
(chacune ayant un mode de gestion différent, mais la n'est pas le problème )

La Première table "JEUX" est indexée , j'ai donc une autre Table "INDEX_JEUX" qui est chargée en mémoire, contrairement à la table "JEUX" qui reste bien au chaud dans le fichier.

Mon soucis, le voici : Lorsque je veux ajouter un jeux, je me rends dans l'index et regarde où il y a un emplacement libre dans la table "JEUX" (l'index me fournit l'offset jusqu'à l'emplacement "libre").

Pour me rendre à l'endroit indiqué dans le fichier, dois-je faire un fseek ou existe-t-il une autre fonction?
Une fois que mon pointeur se trouve à l'endroit souhaité dans le fichier, comment remplacer ce qui existe déjà à cet endroit, par ce que je veux y insérer (le tout étant stocké dans une structure"temporaire") ?

Merci d'avance !

PS: Voici mon code , pour ceux qui le souhaite : http://pastebin.com/JBeFfLDA
la fonction 'incriminée est la fonction ecrire_fichier_jeux , située après AJOUT_JEU



Have Fun .
Oliobs.
A voir également:

5 réponses

Urielxx Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   46
 
Tu as déjà bien avancé !

Le fseek() te permet en effet de te positionner à l'endroit qui va bien dans le fichier (fsetpos() permet p-etre aussi de le faire). Ensuite, il suffit d'un fwrite() pour écrire tes données. Ou est ton problème ?
Merci de +1 les messages utiles et de marquer vos questions résolues dès que possible.
1
oliobs Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   1
 
Eh bien, c'est ce que j'ai fais ...

Pour la table joueurs tout se passe normalement, les joueurs sont toujours la lorsque je redémarre le programme.

Mais pour l'index et les jeux , rien ne s'inscrit dans les fichiers ( Je pense que le problème vient de la )

J'ai un peu avancé .. http://pastebin.com/PB7c0FZt
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Attention, lorsque tu parle de fichier et d'insertion. Un fichier c'est une suite linéaire de valeurs, il n'y a pas de notion de ligne. Tu ne peut pas insérer quelque chose dans un fichier, juste écraser ce qui y ait déjà (éventuellement des octets nuls).
0
oliobs Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   1
 
Mais on peut n'écraser qu'une partie de ces octets ?

Pour ça, fwrite à l'endroit où je veux écrire suffit non ?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
oui, bien sur.
0
oliobs Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   1
 
Alors je ne comprends pas mon erreur ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Urielxx Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   46
 
Tu fais bien un flush() ou un close() de ton fichier pour etre sur que l'ecriture est bien effectuée ?

0
oliobs Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   1
 
Oui, je pense que le problème vient du mode d'ouverture, je l'ouvre en "wb" donc tout est supprimé une fois ouvert..
0
Urielxx Messages postés 190 Date d'inscription   Statut Membre Dernière intervention   46
 
Oui, ouvre la en "a", fait un rewind(), et tun seek() ensuite.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
ou ouvre en w+
0