IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

fwrite : Comment écrire à la fin d'un fichier?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 25
    Par défaut fwrite : Comment écrire à la fin d'un fichier?
    Bonjour,

    Je ne suis pas un spécialiste C
    Dans mon application je dois ouvrir un fichier et y ajouter une ligne.
    J'ouvre le fichier avec la commande suivante (szFile contient le nom du fichier):

    file=fopen(szFile,"w");

    ensuite j'utilise fwrite pour ecrire les données présentent dans ma variable szDataToWrite
    fwrite(DataToWrite, sizeof(szDataDataToWriteToLog),1,file);

    ensuite je ferme le fichier

    fflush(file);
    fclose(file);

    avec ce code tout le fichier est effacé et j'ai seulement la ligne que j'ai écris.

    Pouvez vous me donner un example de code permettant d'écrire à la fin d'un fichier avec fwrite?

    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    bonjour,

    ca se passe a l ouverture (ca peut se faire a l ouverture en tout cas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fopen( "ton_fichier", "a" /* a pour append => ajout en fin de fichier */ );
    sinon a coup de ftell et fseek (fseek doit suffire meme).

    Pour plus de detail le man

  3. #3
    Membre averti
    Inscrit en
    Octobre 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 25
    Par défaut
    Merci cela a fonstionné mais j'ai maintenant un autre problème.
    Lorsque j'écris dans le fichier il semble que des charactères binaires sont ajoutés à la fin
    ---------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char szDataString[150];
    file=fopen(szLogFile,"a");
    sprintf( szDataString, "%s \n",  "Ligne ajoutée" );
    fwrite(szDataString, sizeof(szDataString),1,file);
    fflush(file);
    fclose(file);
    -------------

    Lorsque j'ouvre le fichier j'ai:

    Ligne ajoutée ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ

    D'où viennent les charactères ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ

  4. #4
    Membre averti
    Inscrit en
    Octobre 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 25
    Par défaut
    Merci Emmanuel, en fait j'ai posté ma question au même moment que toi.
    Maintenant cela fonctionne bien avec fprintf.

    Merci

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par philipina Voir le message
    Lorsque j'ouvre le fichier j'ai:

    Ligne ajoutée ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ

    D'où viennent les charactères ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
    Du fait que tu n'as probablement pas clôturé ta chaîne avec un zéro '\0' dans ton buffer, ce qui fait que ta fonction écrit tout ce qu'elle lit en mémoire jusqu'à ce qu'elle en trouve en un.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par philipina Voir le message
    Dans mon application je dois ouvrir un fichier et y ajouter une ligne.
    J'ouvre le fichier avec la commande suivante (szFile contient le nom du fichier):

    file=fopen(szFile,"w");
    "w" écrase le fichier précédant. Il faut utiliser "a" (append). Je t'invite à lire un livre de C d'urgence (des références de livres et de sites sur ce site et sur le mien).

    ensuite j'utilise fwrite pour ecrire les données présentent dans ma variable szDataToWrite
    fwrite(DataToWrite, sizeof(szDataDataToWriteToLog),1,file);
    C'est faisable, mais tu vas faire de trucs bizarres avec ton sizeof. 'szDataDataToWriteToLog' est bien un tableau ? Dans ce cas, tu vas écrire le 0 final et des données indéfinies ensuite, ce qui ne se fait pas du tout et peut engendrer des problèmes à la lecture. Et si c'est un pointeur, tu vas écrire quelques octets (2, 4 ...) dans le fichier, et c'est tout...

    En principe, dans un fichier texte, on écrit des lignes de texte (séquences de caractères terminées par un \n). Pour ça, on utilise plutôt fputs(), fprintf() ...
    ensuite je ferme le fichier

    fflush(file);
    fclose(file);
    Le fflush() ne sert à rien (fclose() le fait déjà).
    avec ce code tout le fichier est effacé
    C'est le comportement attendu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PERL] Comment écrire à la fin d'un fichier ?
    Par barichon21 dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2009, 08h21
  2. [Débutant] Comment écrire et lire dans un fichier
    Par jeanver dans le forum Delphi
    Réponses: 6
    Dernier message: 15/02/2007, 01h02
  3. Réponses: 4
    Dernier message: 07/11/2006, 14h02
  4. Comment écrire une section dans un fichier ini?
    Par Jayceblaster dans le forum Delphi
    Réponses: 5
    Dernier message: 26/06/2006, 14h08
  5. Réponses: 7
    Dernier message: 17/03/2006, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo