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 dans un fichier ouvert avec fopen


Sujet :

C

  1. #1
    Membre régulier Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Points : 120
    Points
    120
    Par défaut Ecriture dans un fichier ouvert avec fopen
    bonjour,

    voici mon code
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX_URL 5
    #define LONG_URL 20
     
    typedef struct {
             char source[LONG_URL+1];
             char target[LONG_URL+1];
    }urls;
    urls url[MAX_URL];
     
    void ajouterurl()
    {
     FILE *ptr;
     int i=0;
     
     ptr=fopen("mappages", "a+");
     if (ptr==NULL)
       {
         printf("erreur lors de création du fichier\n");
       }
       else
       {
       for (i; i<=MAX_URL; i++)
         {
           fprintf(ptr, "entrer l'url sources:\n");
           fscanf(ptr,"%s\n", &url[i].source);
    //ici je veut mettre une instruction qui permet à l'utilisateur de saisir d'abord l'url source, et quand il tappe entré, le message entrer url cible apparait pour saisir l'url cible. 
           fprintf(ptr, "entrer l'url cible:\n");
           fscanf(ptr,"%s\n", &url[i].target);
         }
       }
      fclose(ptr);
    }
     
    main()
    {
     ajouterurl();
    }

    pouvez vous m'écliarer svp ?

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Ce que je peux te dire c'est ce que fait ton programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ptr=fopen("mappages", "a+");
    Il ouvre un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(ptr, "entrer l'url sources:\n");
    Il y écrit "entrer l'url sources:\n".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(ptr,"%s\n", &url[i].source);
    Il (essai de) y lit une ligne.
    ...

  3. #3
    Membre régulier Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Points : 120
    Points
    120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(ptr,"%s\n", &url[i].source);
    permet à un utilisateur de saisir une url.

    ce que je veut: lorsqu'il termine la saisi de l'url et frappe sur "entrée"
    la deuxième phrase apparait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(ptr, "entrer l'url cible:\n");

  4. #4
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par mackla Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(ptr,"%s\n", &url[i].source);
    permet à un utilisateur de saisir une url.
    Non, cela ne le permet pas. Du moins si tu t'attends à ce que l'utilisateur saisisse l'url dans ton terminal, il faut spécifier le bon flux à fscanf (stdin). Il me semble tout de même qu'il est plutôt déconseillé d'utiliser cette méthode. Il faut favoriser fget*.

    Pareil pour fprintf. Si tu veux afficher ton message sur la console il faut spécifier le flux de sortie standard (stdout), ou utiliser tout simplement printf.

  5. #5
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    Bonjour,

    Je te conseille de regarder comment bien gérer les entrées sorties dans les tutoriels disponibles sur http://c.developpez.com/cours/#tutoriels-c, ou sur http://emmanuel-delahaye.developpez.com

    Exemple de tutoriels :
    http://emmanuel-delahaye.developpez.com/inputs.htm
    http://franckh.developpez.com/articl...-debuter-en-c/

  6. #6
    Membre régulier Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Points : 120
    Points
    120
    Par défaut
    Envoyé par valefor
    Du moins si tu t'attends à ce que l'utilisateur saisisse l'url dans ton terminal, il faut spécifier le bon flux à fscanf (stdin).
    non! l'utilisateur va écrire dans le fichier "mappages" pointé par ptr, pas de stdin.
    Il faut favoriser fget*.
    fget, c'est pour la lecture , et moi je veut ecrire(fprintf)

  7. #7
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par mackla Voir le message
    Envoyé par valefor
    non! l'utilisateur va écrire dans le fichier "mappages" pointé par ptr, pas de stdin.

    fget, c'est pour la lecture , et moi je veut ecrire(fprintf)
    Ce n'est pas lui qui va écrire dans le fichier, c'est ton programme !

    Pour faire simple tu devrais faire comme tout le monde.

    Tu récupère dans un buffer ce que l'utilisateur entre au clavier, puis tu transvase ce buffer vers ton fichier.

  8. #8
    Membre régulier Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Points : 120
    Points
    120
    Par défaut
    salut,
    désolé pour le retard.

    Envoyé par valefor
    Ce n'est pas lui qui va écrire dans le fichier, c'est ton programme !
    après exécution du programme, l'utilisateur va ouvrir le fichier nommée mappages, et va saisir des données.
    Envoyé par valefor
    Pour faire simple tu devrais faire comme tout le monde.

    Tu récupère dans un buffer ce que l'utilisateur entre au clavier, puis tu transvase ce buffer vers ton fichier.
    ce n'étais pas le but de mon poste.je reprend ma question: quelle instruction mettre pour que le deuxième message n'apparaisse qu'apès la fin de saisi de l'utilisateur, autrement dit, lorsqu'il saisi et tappe sur entrée.
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX_URL 5
    #define LONG_URL 20
     
    typedef struct {
             char source[LONG_URL+1];
             char target[LONG_URL+1];
    }urls;
    urls url[MAX_URL];
     
    void ajouterurl()
    {
     FILE *ptr;
     int i=0;
     
     ptr=fopen("mappages", "a+");
     if (ptr==NULL)
       {
         printf("erreur lors de création du fichier\n");
       }
       else
       {
       for (i; i<=MAX_URL; i++)
         {
           fprintf(ptr, "entrer l'url sources:\n");   //premier message
           fscanf(ptr,"%s\n", &url[i].source);
     
           fprintf(ptr, "entrer l'url cible:\n");     //deuxième message
           fscanf(ptr,"%s\n", &url[i].target);
         }
       }
      fclose(ptr);
    }
     
    main()
    {
     ajouterurl();
    }
     
     
    pouvez vous m'écliarer

  9. #9
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Dans ton programme tel qu'il est écrit actuellement, RIEN ne sera affiché à l'écran, et RIEN ne sera lu au clavier. Il faut être bien clair là dessus. Ton programme est actuellement totalement autonome et n'a même pas besoin d'un utilisateur.

    Il faudrait que tu commence par savoir ce que ton programme est censé faire.
    Je suppose qu'il doit :
    - Afficher à l'écran (ou plutôt dans le terminal) la chaîne "entrer l'url sources:\n"
    - Lire une ligne au clavier (ou plutôt : lire à partir du terminal)
    - Écrire la chaîne précédemment lu, dans le fichier mappage
    - Afficher à l'écran (ou plutôt dans le terminal) la chaîne "entrer l'url cible:\n"
    - Lire une ligne au clavier (ou plutôt : lire à partir du terminal)
    - Écrire la chaîne précédemment lu, dans le fichier mappage

    C'est correcte ?
    Si ça l'est, code ton programme de telle façon qu'il fasse cela.

Discussions similaires

  1. [AJAX] Ecriture dans un fichier json avec une requête AJAX
    Par DarkPoster14 dans le forum jQuery
    Réponses: 1
    Dernier message: 10/07/2012, 09h45
  2. [XL-2010] Sélection d'une cellule vide dans un fichier "ouvert" avec GetOpenFilename
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/12/2010, 14h40
  3. Ecriture dans un fichier en avec js
    Par jamesleouf dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 02/08/2008, 11h25
  4. Ecriture dans un fichier txt avec C++
    Par altera14 dans le forum C++
    Réponses: 4
    Dernier message: 17/06/2008, 10h57
  5. Lecture ecriture dans un fichier .mat avec C++
    Par WELCOMSMAIL dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/09/2007, 11h29

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