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 :

ecriture lecture dans un fichier


Sujet :

C

  1. #1
    maz
    maz est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 18
    Points : 16
    Points
    16
    Par défaut ecriture lecture dans un fichier
    Je suis débutant et j'avoue ne pas m'en sortir ...
    J'ouvre un fichier en utilisant la ligne suivante

    newfile = fopen("path\\Log_file","w+");

    je veux ecrire dedans en utilisant:

    void write_str_file (char* message)
    {
    int size_l = strlen (message);
    int size_elemnt = strlen ("a");
    fwrite (message, size_elemnt, size_l, newfile);
    }

    et je souhaite mettre les elemnts du fichier dans un string en utilisant :

    char *read_str_file ()
    {
    static char* flux;
    int size_elmt = strlen ("a");
    int size_file = fsize (newfile)/size_elmt;
    fread (flux,size_elmt,size_file,newfile);
    }

    où fsize :
    long fsize(FILE* fd)
    {
    long size;
    fseek(fd, 0, SEEK_END); /* aller en fin */
    size = ftell(fd); /* lire la taille */
    return size;
    }

    Je me doute qu'il ya des erreurs...
    Pourriez vous me donner des conseils pour que cela marche ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu dois allouer dynamiquement la mémoire pour la chaîne (sans oublier de rajouter le \0).

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    void write_str_file(FILE *pFileOut, char const * message)
    {
    int size_l = strlen(message);
    fwrite(message, sizeof(char), size_l, pFileOut);
    }
     
    char * read_str_file(FILE *pFileIn)
    {
    char *message = NULL;
    int size_file = fsize(newfile);
    int size_l = size_file/sizeof(char);
    message = malloc((size_l+1)*sizeof(char);
     
    fread(message, sizeof(char), size_file, pFileIn);
    message[size_l] = '\0';
    return message;
    }
     
    long fsize(FILE* fd)
    {
    long size;
    long previous_index = ftell(fd);
    fseek(fd, 0, SEEK_END); /* aller en fin */
    size = ftell(fd); /* lire la taille */
    fseek(fd, previous_index, SEEK_SET);/* restaurer l'index d'avant */
    return size;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par maz
    Je suis débutant et j'avoue ne pas m'en sortir ...
    <...>Pourriez vous me donner des conseils pour que cela marche ?
    Ca parait hyper compliqué.

    Reprenons la spécification :

    J'ouvre un fichier <...>
    je veux ecrire dedans <...>
    et je souhaite mettre les elements du fichier dans un string <...>
    C'est pas hyper clair... Je rephrase comme ceci :

    Ecrire "a" dans un fichier
    Lire ce fichier et afficher le contenu.

    Ne pas confondre les objectifs et les moyens.

    Ca se code en quelques lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int main (void)
    {
    #define fichier "data.txt"
     
       enregistrer (fichier, "a");
       lire (fichier);   
     
       return 0;
    }
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void enregistrer (char const *fname, char const *s)
    {
       FILE *fp = fopen (fname, "w");
       if (fp != NULL)
       {
          fprintf (fp, "%s", s);
          fclose (fp);
       }
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void afficher (char const *fname)
    {
       FILE *fp = fopen (fname, "r");
       if (fp != NULL)
       {
          int c;
          while ((c = fgetc(fp)) != EOF)
          {
             putchar (c);
          }
          fflush (stdout);
     
          fclose (fp);
       }
    }
    Pas de Wi-Fi à la maison : CPL

  4. #4
    maz
    maz est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Merci Mr Delahaye,

    J'essaierai à l'avenir d'être plus claire dans mes question ...

Discussions similaires

  1. [1.x] Lecture/Ecriture Depuis/Dans un fichier YAML
    Par Ibn Rochod dans le forum Symfony
    Réponses: 5
    Dernier message: 25/04/2011, 13h08
  2. Ecriture / Lecture dans un fichier Caché
    Par liavart dans le forum Général Java
    Réponses: 0
    Dernier message: 04/11/2009, 18h17
  3. Ecriture et lecture dans un fichier
    Par laetous dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 23/08/2006, 17h59

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