Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > écriture et lecture dans un fichier > Lecture du sujet

écriture et lecture dans un fichier

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne bigadin # Posté le 19/06/2007 à 16:59:30
Groupe : Membres
Bonjour bonjour..... :)

Voila, je me suis mis à l'écriture et à la lecture dans un fichier et j'ais fait ce code dans l'espoire de voir dans ma console les chiffres 0123456789 s'afficher.

Mais il affiche 9045232

Et je ne vois pas pourkoi, vous voyez le probleme vous ?

Code : C++
#include <iostream>
#include <fstream>


using namespace std;

int main()
{
int a;
int b;

fstream fichier;
fichier.open("test.txt",ios::in | ios::out | ios::trunc );

for( a=0 ; a <= 10 ; a++)
{
    fichier << a <<endl ;
}

for( a=0 ; a <= 10 ; a++)
{
    fichier >> b ;
    cout << b ;
}

    system("PAUSE");
    return EXIT_SUCCESS;
}
Hors ligne Davidbrcz # Posté le 19/06/2007 à 18:09:53
Geek un jour, geek toujours !
Avatar
Groupe : Membres
fstream t'ouvre un fichier en lecture/ecriture.
Une fois que tu as écrit tes valeurs , il faut revenir au début du fichier pour les lire.

Partager grâce à l'open source et aux logiciels libres.

Mes articles sur developpez.com : http://come-david.developpez.com/

Da Nyug
 
Hors ligne MatteX # Posté le 19/06/2007 à 18:26:45
The cake is a lie!
Avatar
Groupe : Membres
1) la boucle de lecture n'est pas bonne, va sur developpez.com : http://c.developpez.com/faq/cpp/?page=fichiers

2) n'oublie pas de fermer ton fichier.

3) lors de la lecture ton pointeur est à la ffin du fichier... impossible à lire à partir de la fin. Il faut donc fermer ton fichier en écriture et le réouvrir en lecture (et le refermer)

4) si tu veux lire/écrire de 0 à 9 il va falloir arrêter ta boucle d'écriture AVANT 10

Voici ma solution, ne la regarde que si tu es complètement perdu, amuses-toi à trouver ta propre solution :
Secret (cliquez pour afficher)
Code : C++
#include <iostream>
#include <fstream>


using namespace std;

int main()
{
        fstream fichier;
        fichier.open( "test.txt", ios::out | ios::trunc );

        for( int ecrit = 0 ; ecrit < 10 ; ecrit++)
        {
                fichier << ecrit <<endl ;
        }

        fichier.close();
        fichier.open( "test.txt", ios::in );

        int lect = 0;
        while( fichier >> lect )
        {
                cout << lect << endl;
        }

        fichier.close();

        system( "PAUSE" );
        return 0;
}
Édité le 19/06/2007 à 18:31:10 par MatteX

liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb
Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray!
 
Hors ligne Davidbrcz # Posté le 19/06/2007 à 18:49:13
Geek un jour, geek toujours !
Avatar
Groupe : Membres
Sa boucle de lecture peut être bonne s'il veut ne lire que les 10 1er caractère et s'il y en d'autre apres.

Pour l'histoire de close , n'est il pas appelé dans tout les cas dans le destructeur ?

Partager grâce à l'open source et aux logiciels libres.

Mes articles sur developpez.com : http://come-david.developpez.com/

Da Nyug
 
Hors ligne bigadin # Posté le 19/06/2007 à 22:48:01
Groupe : Membres
OK OK ;)

Merci beaucoup MatteX et Davidbrcz :) :)

Neanmoins, je ne comprend pas le :

Code : C++
while( fichier >> lect )
Hors ligne lmghs # Posté le 19/06/2007 à 22:58:49
Groupe : Membres
Citation : Davidbrcz
a- Sa boucle de lecture peut être bonne s'il veut ne lire que les 10 1er caractère et s'il y en d'autre apres.

b- Pour l'histoire de close , n'est il pas appelé dans tout les cas dans le destructeur ?

a- s'il ne teste pas le résultat de chacune de ses lectures, la boucle n'a aucune chance d'être bonne. D'ailleurs s'il avait testé, il aurait vu quand cela n'allait pas.

b- si

@bigadin, MatteX a donné le lien qui contient tout ce qu'il faut pour décrypter cette incantation.

PS: pas besoin de réouvrir si le fichier est ouvert en lecture+ecriture. Toutefois, il peut être nécessaire de faire un seekg et éventuellement un clear, j'avoue n'avoir pratiquement jamais de fichiers en L+E.
 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 360 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0411s (0.0212s)