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

Résolu
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.

5 réponses

  1. 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
    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
      1. Contributeur
        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
        1. Mais on peut n'écraser qu'une partie de ces octets ?

          Pour ça, fwrite à l'endroit où je veux écrire suffit non ?
          0
          1. Contributeur
            oui, bien sur.
            0
          2. Alors je ne comprends pas mon erreur ...
            0
        2. Tu fais bien un flush() ou un close() de ton fichier pour etre sur que l'ecriture est bien effectuée ?

          0
          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
          2. Oui, ouvre la en "a", fait un rewind(), et tun seek() ensuite.
            0
          3. Contributeur
            ou ouvre en w+
            0

        Discussions similaires

        question pix mot caché

        7 réponses