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
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
A voir également:
- Comment ouvrir un fichier null ?
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment ouvrir un fichier dat - Guide
- Comment réduire la taille d'un fichier - Guide
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
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" :
Exemple pour réécrire complètement "fichier.txt" :
Pour ne pas réécrire complètement mais seulement ajouter à partir de la fin, remplace par cette ligne :
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 :)
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
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++ :
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();
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
11 mars 2011 à 11:25
En C++, le code que j'ai donné fonctionne, non ? Pourrais-tu m'expliquer la différence stp ? :)
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
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.
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.
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
11 mars 2011 à 11:39
Merci ! C'est pourtant la première fois que je vois un code comme le tien...
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
11 mars 2011 à 12:22
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
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 !
;-)
Ps : L'ouverture du fichier est en C, si tu le veux en C++ à toi de voir.
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.
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
11 mars 2011 à 08:15
Merci beaucoup de votre aide
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
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
// CODE
printf("NOM ? ");
scanf("%d", &nom);
fprintf(fichier, "NOM : %d", nom);
fclose(fichier);
==> NOM : 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
11 mars 2011 à 17:26
Et la variable "fichier" tu la déclares où ?
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
11 mars 2011 à 23:06
FILE* fichier = NULL;
au debut de la Fn
au debut de la Fn
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
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?
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?
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
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
-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
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
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.
Ton problème viens de %d qui lit un entier et non une chaine.
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
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
//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