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

Résolu
oliobs Messages postés 17 Statut Membre -  
Char Snipeur Messages postés 10112 Statut Contributeur -
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 223 Statut Membre 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 17 Statut Membre 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 10112 Statut Contributeur 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 17 Statut Membre 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 10112 Statut Contributeur 1 299
 
oui, bien sur.
0
oliobs Messages postés 17 Statut Membre 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 223 Statut Membre 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 17 Statut Membre 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 223 Statut Membre 46
 
Oui, ouvre la en "a", fait un rewind(), et tun seek() ensuite.
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
ou ouvre en w+
0