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


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut ecriture dans un fichier
    Bonjour,

    J'ai fais les méthodes lire, ouvrir, fermer, lireligne, compterligne dans 1 .cpp
    Je n'arrive pas à faire marcher ma méthode écriture dans le main.

    Voici mon code du main, sachant que toutes les méthodes marchent à part la méthode écrire, pouvez vous compléter mon main svp

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #pragma hdrstop
    #include <condefs.h>
    #include <iostream.h>
    #include <conio.h>
    #include "esfichier.h"
    #include <stdio.h>
     
    //---------------------------------------------------------------------------
    #pragma argsused
     
    USEUNIT("esfichier.cpp");
    //---------------------------------------------------------------------------
    ESFichier *FichLire;
    ESFichier *FichEcrire;
     
    int main(int argc, char *argv[])
    {
        char Tab[255];
        int Lig;
        FichLire = new ESFichier();
        FichEcrire = new ESFichier();
     
    //****************************************************
       // Lecture d'un fichier APT
     
        // Ouverture en lecture
        FichLire->Ouvrir("programme_apt.txt","r");
        cout << "ouverture du fichier en lecture" << endl;
     
        FichLire->CompterLigne(&Lig);
        printf("Nombre de ligne : %d\n",Lig);
     
     
        //Lire une ligne n
        FichLire->LireLigne(Tab,10);
        cout << Tab << endl;
        FichLire->LireLigne(Tab,1);
        cout << Tab << endl;
     
       /* while(FichLire->Lire(Tab)!=NULL)
        {
         cout << Tab << endl;
        }*/
     
     
        // fermeture
        FichLire->Fermer();
    //****************************************************
     
    //****************************************************
       // Ecriture d'un fichier ISO
        int i;
     
        // Ouverture du fichier en mode Ecriture
        FichEcrire->Ouvrir("Fichier.txt","w");
        cout << "ouverture du fichier en ecriture" << endl;
     
        if (!FichEcrire->Ecrire(Tab)) cout << "Probleme d'ecriture dans le fichier" << endl;
     
     
     
     
        // Fermeture
        FichEcrire->Fermer();
     
     
    //****************************************************
     
        //attente d'une touche du clavier pour quitter l'application
        getch();
     
        return 0;
     
    }

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    J'ai fais les méthodes lire, ouvrir, fermer, lireligne, compterligne dans 1 .cpp
    Je n'arrive pas à faire marcher ma méthode écriture dans le main.

    Voici mon code du main, sachant que toutes les méthodes marchent à part la méthode écrire, pouvez vous compléter mon main svp
    .cpp, new, delete, class : Voici des mots qui devraient te dire:

    Tu n'es pas dans le bon forum, le C++ c'est à côté! Ils pourront répondre à ta question....
    Jc

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << "ouverture du fichier en lecture" << endl;
    Ce n'est pas du C.
    Tu mélanges C et C++, ce n'est jamais bon, alors fais un choix
    zut grillé
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    oui pardon mais bon vous pouvez m'aider quand même ?

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ben, comme j'ai perdu ma boule de cristal, pour t'aider, il faudrait éventuellement que tu montres la méthode Ecrire
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    aussitôt dit aussitot fait

    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
    bool ESFichier::Ecrire(char *ligne)
    {
    	int status;
     
    	// sort si fichier pas ouvert
    	if (fichier == NULL) return false;
     
       else {
    			// ecrit  la ligne
    			status = fprintf (fichier, "%s\n", ligne);
     
    			// Compte rendu d'état
    			return (status != (int)strlen(ligne));
       		}
     
     
    }

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu as remarqué que tu ajoutes un '\n' à la fin de ta ligne ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    oui et alors ?

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Que retourne la fonction fprint d'après toi ??
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    la ligne non ?

  11. #11
    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 Polo40
    la ligne non ?
    On se réveille...

    http://www.linux-france.org/article/man-fr/man3/printf-3.html
    Ces fonctions renvoient le nombre de caractères imprimés,
    sans compter le caractère nul `\0' final dans les chaînes.
    <...>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    status = fprintf (fichier, "%s\n", ligne);
    Donc, comme tu ajoutes un '\n', la valeur retournée est forcément différente de la longueur de la ligne (sans le '\n')... Ca parait un peu évident, non ?
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Non, le nombre de caractères écrits, donc comme tu en écris un de plus que la longueur de la ligne...

    [edit]encore grillé
    c'est ma journée [edit]
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    je suis perdu la :s

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(f, "%s\n", "toto");
    retournera 4 plus le nombre de caractères correspondant au '\n' (dépend du système).
    Donc fprintf ne retournera par 4 mais 5 ou 6, ce qui fait que ta méthode Ecriture retournera toujours false.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    oui mais ca serait coulé d'aller au but svp

  16. #16
    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 Polo40
    oui mais ca serait coulé d'aller au but svp
    : Ca donne quoi en français ?
    Pas de Wi-Fi à la maison : CPL

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    Dans le main je ne sais pas quoi mettre pour que j'écrive dans un fichier.
    Je rapelle mon code :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #pragma hdrstop
    #include <condefs.h>
    #include <iostream.h>
    #include <conio.h>
    #include "esfichier.h"
    #include <stdio.h>
     
    //---------------------------------------------------------------------------
    #pragma argsused
     
    USEUNIT("esfichier.cpp");
    //---------------------------------------------------------------------------
    ESFichier *FichLire;
    ESFichier *FichEcrire;
     
    int main(int argc, char *argv[])
    {
        char Tab[255];
        int Lig;
        FichLire = new ESFichier();
        FichEcrire = new ESFichier();
     
    //****************************************************
       // Lecture d'un fichier APT
     
        // Ouverture en lecture
        FichLire->Ouvrir("programme_apt.txt","r");
        cout << "ouverture du fichier en lecture" << endl;
     
        FichLire->CompterLigne(&Lig);
        printf("Nombre de ligne : %d\n",Lig);
     
     
        //Lire une ligne n
        FichLire->LireLigne(Tab,10);
        cout << Tab << endl;
        FichLire->LireLigne(Tab,1);
        cout << Tab << endl;
     
       /* while(FichLire->Lire(Tab)!=NULL)
        {
         cout << Tab << endl;
        }*/
     
     
        // fermeture
        FichLire->Fermer();
    //****************************************************
     
    //****************************************************
       // Ecriture d'un fichier ISO
        int i;
     
        // Ouverture du fichier en mode Ecriture
        FichEcrire->Ouvrir("Fichier.txt","w");
        cout << "ouverture du fichier en ecriture" << endl;
     
        if (!FichEcrire->Ecrire(Tab)) cout << "Probleme d'ecriture dans le fichier" << endl;
     
     
     
     
        // Fermeture
        FichEcrire->Fermer();
     
     
    //****************************************************
     
        //attente d'une touche du clavier pour quitter l'application
        getch();
     
        return 0;
     
    }
    Dans la méthode lecture, je lit un fichier texte.

  18. #18
    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
    [delestage]
    Pas de Wi-Fi à la maison : CPL

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    oui vous pouvez m'aider svp ?

  20. #20
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Je suppose que tu veux lire un fichier et en copier le contenu dans un autre fichier ?

    Si c'est le cas, et puisque tu es en C++, je te suggère à toi aussi d'utiliser la librairie officielle du langage et en particulier les classes d'e/s :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <fstream>
    #include <string>
     
    string str;
    ifstream inFile( "in.txt" );
    ofstream outFile( "out.txt" );
    if ( ! inFile || ! outFile ) return; 
     
    while ( getline( inFile, str ) ) {
        outFile << str.c_str() << endl;
    }
    Voir aussi l'excellente FAQ C++, dont : http://c.developpez.com/faq/cpp/?page=fichiers

    NB : attention aux en-têtes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <condefs.h> 
    #include <iostream.h> 
    #include <conio.h> 
    #include "esfichier.h" 
    #include <stdio.h>
    sont obsolètes.
    Utiliser ceux du bout de code plus haut (et les autres officiels de la STL).

Discussions similaires

  1. probleme d'ecriture dans un fichier texte
    Par azrael88370 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2005, 17h33
  2. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48
  3. Probleme d'ecriture dans un fichier en mode Text
    Par bbozet dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/01/2004, 13h46
  4. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

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