C++ et fichiers

Fermé
P390 Messages postés 243 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 24 février 2013 - 10 mars 2011 à 19:27
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 18 mars 2011 à 23:57
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

Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
10 mars 2011 à 23:15
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mars 2011 à 08:10
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
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 mars 2011 à 11:25
En C++, le code que j'ai donné fonctionne, non ? Pourrais-tu m'expliquer la différence stp ? :)
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mars 2011 à 11:37
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
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 mars 2011 à 11:39
Merci ! C'est pourtant la première fois que je vois un code comme le tien...
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mars 2011 à 12:22
0
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
Modifié par Bilow le 18/03/2011 à 23:58
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
P390 Messages postés 243 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 24 février 2013 16
11 mars 2011 à 08:15
Merci beaucoup de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
P390 Messages postés 243 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 24 février 2013 16
11 mars 2011 à 14:05
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
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 mars 2011 à 17:26
Et la variable "fichier" tu la déclares où ?
0
P390 Messages postés 243 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 24 février 2013 16
11 mars 2011 à 23:06
FILE* fichier = NULL;
au debut de la Fn
0
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 mars 2011 à 23:56
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
P390 Messages postés 243 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 24 février 2013 16
12 mars 2011 à 12:22
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
14 mars 2011 à 17:14
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
P390 Messages postés 243 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 24 février 2013 16
18 mars 2011 à 22:59
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