C++ et fichiers

P390 Messages postés 258 Statut Membre -  
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je developpe en C++ depuis peut et je suis un peu pris par le temps je fais actuellement un programme de gestion :
ce programme en console permet de stocker des infos sur des employer :
Leur nom , prenom ,age, date de naissance,e-mail,et autre
mais je n'ai pas le temps de me pencher sur le probleme etmes competence sont encore limité , donc ma question est ; quel serait le code ki me permettrer douvrir un fichier contenant ces infos et de les affiche dans la console avec une certaines presentation ; et de les editer

6 réponses

  1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Salut,

    Voici un excellent turoriel qui te permettra d'apprendre rapidement à manipuler les fichiers en C / C++ :

    https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16421-lire-et-ecrire-dans-des-fichiers

    Exemple pour afficher ligne par ligne le contenu de "fichier.txt" :
    FILE* fichier = NULL;
    fichier = fopen("fichier.txt", "r");
    char ligne [100];
    while(fgets(ligne, 100, fichier)){
    cout << ligne;
    }
    fclose(fichier);

    Exemple pour réécrire complètement "fichier.txt" :
    FILE* fichier = NULL;
    fichier = fopen("fichier.txt", "w");
    char nouveau_texte [] = "Hello world !";
    fprintf(fichier, "%s", nouveau_texte);
    fclose(fichier);

    Pour ne pas réécrire complètement mais seulement ajouter à partir de la fin, remplace par cette ligne :
    fichier = fopen("fichier.txt", "a");
    Toutes les infos, codes et explications sont dans le tuto :)
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut.
    La méthode de Bilow est correcte et fonctionne mais c'est du C. Si tu fait du C++, utilise les fonctions C++ :
    #include <fstream>
    std::fstream fichier;
    fichier.open("fichier.txt",std::ios::in);
    while (fichier)
     {
          fichier>>ligne;
          cout<<ligne;
     }
    fichier.close();
    1
    1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      En C++, le code que j'ai donné fonctionne, non ? Pourrais-tu m'expliquer la différence stp ? :)
      0
    2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      Salut.
      Ta première question, j'y répond dans ma première phrase.
      Le C++ a été conçu, plus ou moins, comme une surcouche du C. C'est à dire qu'il y a beaucoup de compatibilité entre les deux et qu'il est possible d'utiliser des fonctions C en C++.
      Ce que tu écris (à par le cout) est valable en C. Mais le C++ introduit une nouvelle façon, plus objet, de gérer les fichiers, c'est ce que j'ai écris.
      Pour utiliser au mieux les fonctionnalités du C++ (plus haut niveau que le C), mieux vaut utiliser ce qui est recommandé.
      C'est une histoire de style et de norme, pas de fonctionnement.
      0
    3. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Merci ! C'est pourtant la première fois que je vois un code comme le tien...
      0
  3. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Salut,

    Tu demandes d'abord à l'utilisateur son nom. Tu as deux variables, le nom et le prénom. Tu copies le nom dans une autre variable, tu y ajoutes .frp et c'est fait !

    // On a 'nom', 'prenom' et 'fichier' 
    char nomFichier [30]; 
    sprintf(nomFichier, "%s.frp", nom); 
    fichier = fopen(nomFichier, "---methode---"); 
    // Et là tu manipules.

    ;-)

    Ps : L'ouverture du fichier est en C, si tu le veux en C++ à toi de voir.
    1
  4. P390 Messages postés 258 Statut Membre 16
     
    Merci beaucoup de votre aide
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. P390 Messages postés 258 Statut Membre 16
     
    pour rentrer du texte dan un fichier comment faut t'il faire ? :

    // CODE
    printf("NOM ? ");
    scanf("%d", &nom);
    fprintf(fichier, "NOM : %d", nom);
    fclose(fichier);

    ==> NOM : 0
    0
    1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Et la variable "fichier" tu la déclares où ?
      0
    2. P390 Messages postés 258 Statut Membre 16
       
      FILE* fichier = NULL;
      au debut de la Fn
      0
    3. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Oki ;)
      En théorie ton code fonctionne correctement, si tu as ouvert la variable fichier avec l'option "a" ou w" (ou encore "a+" et "w+"). Et si tu souhaites coder orienté objet, donc en bon C++, regarde la réponse de Char Snipeur. Ca va?
      0
    4. P390 Messages postés 258 Statut Membre 16
       
      jai utilisé vos code , mais :

      -je n'arrive pas a donné comme nom a mon fichier , la valeur nom ,
      et
      -dans mon fichier il y a ecrit NOM : 0
      au lieu de ; NOM : PAULLE
      0
    5. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      pffff... Quand on sais pas lire un exemple. ça m'étonnerai que tu es eu le problème avec la version C++ de lecture, ou alors il faut que tu me donnes ça.
      Ton problème viens de %d qui lit un entier et non une chaine.
      0
  7. P390 Messages postés 258 Statut Membre 16
     
    Mais alors quel serait le code pour que je puisse obtenir ceci

    //Console

    Nom : PAULLE // je rentre le nom
    Prenom : James // je rentre le prénom

    //fichier PAULLE.frp

    Nom : PAULLE // dans le fichier frp , il y a ecrit
    // le nom entrer précédemment
    Prenom : James // Prenom entrer précédemment

    et je voudrais que "PAULLE.frp" du moins "PAULLE" varie selon le nom que j'entre , si j'entre Nom : LONIDES , alors un fichier LONIDES.frp est créé , et , il contiendrai les informations entrer precedement

    Merci de vos future reponse
    0