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 :

La fonction fgets


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut La fonction fgets
    Bonsoir,

    J'ai encore remanier le code de la section( segmentation fault...)
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <stdlib.h>
     
    #include <stdio.h>
     
    #include <sys/stat.h>
     
    #include<string.h>
     
    /*permet d'ouvrir un fichier de sauvegarde*/
    FILE *ouvrir(void)
    {
    FILE *fic;
    fic=fopen("sauvegar", "r+");
    if (fic==NULL)
    fic=fopen("sauvegar", "w+");
    return fic;
    }
     
    int main (void)
        {
    FILE *fic;
    fic = ouvrir();
     
     
     
         system("ls *.c>sauvegar");
    //fseek(fic,0, SEEK_SET);
    //fgets();
     
     close(fic);
         }
    Je veux ouvrir apres le fichier sauvegar, recuperer les noms des fichiers qu'il y a dedans et les mettre dans une chaine mais j'arrive pas a bien employer la fonction (fgets)
    Merci pour votre aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    salut,

    pourquoi tu ouvres le fichier avant de le créer??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FILE *ouvrir(void)
    {
    FILE *fic;
    fic=fopen("sauvegar", "r+");
    if (fic==NULL)
    fic=fopen("sauvegar", "w+");
    return fic;
    }
    si j'ai bien compris tu veux ouvrir le fichier pour le lire, à quoi sert le "w+"


    s'il n'arrive pas à ouvrir le fichier, tu le fermes qd même! il y a une gestion d'erreur qui manque.

    pour fgets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char buffer[256];
    if (fget (buffer, 256, fic) != NULL)
    {
      // traitement
    }
    le 256 est un exemple

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    si si mon prog m'a bien créé un fichier, et il y a bien ce que je veux dedans
    il ya une liste de nom de fichier comme ça:
    tes1.c
    tes2.c
    ...
    Maintenant je acceder au contenu du fichier et mettre chaque nom dans une maille d'un liste chainée

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    cette fonction sert à créer un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FILE *ouvrir(void)
    {
    FILE *fic;
    fic=fopen("sauvegar", "r+");
    if (fic==NULL)
    fic=fopen("sauvegar", "w+");
    return fic;
    }

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    je t'ai pas dit que ca te cree pas de fichier, ce que je veux dire c'est que t'as une redondance ou plutot une incoherence...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("ls *.c>sauvegar");
    c'est cette ligne qui te crée le fichier et non pas la fonction que tu m'as citée

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    oui tu as raison! lol

  7. #7
    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 thepinguin
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/stat.h>
    #include<string.h>
     
    /*permet d'ouvrir un fichier de sauvegarde*/
    FILE *ouvrir(void)
    {
    FILE *fic;
    fic=fopen("sauvegar", "r+");
    if (fic==NULL)
    fic=fopen("sauvegar", "w+");
    return fic;
    }
     
    int main (void)
        {
    FILE *fic;
    fic = ouvrir();
     
     
     
         system("ls *.c>sauvegar");
    //fseek(fic,0, SEEK_SET);
    //fgets();
     
     close(fic);
         }
    Je veux ouvrir apres le fichier sauvegar, recuperer les noms des fichiers qu'il y a dedans et les mettre dans une chaine mais j'arrive pas a bien employer la fonction (fgets)
    Tu fais un peu n'importe quoi dans ton code. Pourquoi tu ne commences pas par écrire calmement une description des opérations que tu veux faire.

    Si j'ai bien compris la spécification, c'est

    1 - Créer une liste des fichier "*.c"
    2 - Lire cette liste et l'afficher à l'écran

    Ben voilà. Y'a plus qu'à faire ce qui est écrit.

    Tu as choisi une commande système pour créer la liste, pourquoi pas. Ce n'est pas portable, mais tu le sais (chez moi, c'est "dir *.c")

    Alors on commence par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       /* 1 - Creer une liste des fichier "*.c" */
       system ("ls *.c > sauvegar");
    Pour que ça marche il faut le mettre dans un main() et system() doit être déclaré, alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdlib.h>
     
    int main (void)
    {
       /* 1 - Creer une liste des fichier "*.c" */
       system ("ls *.c > sauvegar");
     
       return 0;
    }
    Et quand on a ça, c'est une étape stable et cohérente, alors on le teste. Ca doit compiler et s'exécuter sans erreurs, produire un fichier sauvegar qu'on peut visualiser sous unixoide avec
    Ensuite, on ajoute le code le lecture
    Voila l'algorithme : Ca ne devrait pas être très difficile de la traduire en C. Chaque ligne de l'algorithme devrait être un commentaire du code C...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DEBUT
     fichier := ouvrir_mode_lecture_text("sauvegar")
     SI fichier <> NIL
       TANT QUE lire_ligne(fichier, ligne) <> ERREUR_LECTURE
          PRINT ligne
       FIN TANT QUE
       fermer(fichier)
     FIN SI
    FIN
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. bug avec la fonction fgets
    Par sebatlante dans le forum C
    Réponses: 5
    Dernier message: 07/06/2009, 13h50
  2. [MySQL] Problème avec la fonction fgets et les retours chariot
    Par didoulive dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/02/2008, 19h08
  3. Réponses: 7
    Dernier message: 12/10/2007, 18h05
  4. La fonction fgets est-elle compatible Windows/Unix ?
    Par ashurai dans le forum Langage
    Réponses: 1
    Dernier message: 05/04/2006, 17h59
  5. Réponses: 20
    Dernier message: 25/09/2005, 15h07

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