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 :

Charger et Sauver des unsigned char dans un fichier


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut Charger et Sauver des unsigned char dans un fichier
    Bonjour,
    J'ai des problème pour sauver des unsigned char dans un fichier. En gros je veux lire un fichier contant des nombres et sauver dans un autre ficher ces même nombres. J'arrive à charger, même si je suis pas sûr de le faire correctement. Voilà le code que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ifstream file;
    file.open ("source.ppm", ios::in);
    unsigned char cs;
    file >> cs;
    file.close();
     
    ofstream file2;
    file2.open ("resultat.ppm", ios::out);
    file2 << cs;
    file2.close();
    Mais ça ne marche, pas.

  2. #2
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Bonjour

    Tu as juste fait une petite erreur.

    Le fichier que tu lis et le fichier dans lequel tu écris sont tous les deux des ifstream. Or celui que tu lis doit être un ifstream et celui dans lequel tu écris, un ofstream.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    Citation Envoyé par alyma Voir le message
    Bonjour

    Tu as juste fait une petite erreur.

    Le fichier que tu lis et le fichier dans lequel tu écris sont tous les deux des ifstream. Or celui que tu lis doit être un ifstream et celui dans lequel tu écris, un ofstream.
    Ah mince, en fait c'est une erreur quand j'ai tapé le code dans le forum. Mais même avec ofstream, ça ne marche pas. J'ai édité le code.

  4. #4
    Membre éclairé Avatar de GrosLapin
    Homme Profil pro
    Ingénieur et Etudiant
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur et Etudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Par défaut
    alyma a raison, il faut il ofstream.

    Peut être que nous donner l'erreur serait utile

    Edit : et copier un fichier sans boucle avec un char me semble compliqué.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    En fait, j'ai un problème d'encodage, il y a pas vraiment d'erreur, mais j'arrive pas à avoir des vrai unsigned char. Càd, si j'ai 240 dans le fichier, je veux récuperer un unsigned char dont le codage est 240. Pareil pour l'écriture, je veux réécrire 240 et pas le caractère associé.

  6. #6
    Membre éclairé Avatar de GrosLapin
    Homme Profil pro
    Ingénieur et Etudiant
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur et Etudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Par défaut
    Reprenons depuis le début,

    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
    #include <iostream>
    #include <fstream>
     
    using namespace std;
     
    int main ()
    {
        ifstream file;
        file.open ("chemin/source", ios::in);
        unsigned char cs;
        file >> cs;
        file.close();
     
     
        ofstream file2;
        file2.open ("chemin/resultat", ios::out);
        file2 << cs;
        file2.close();
    }
    avec un fichier source qui contient :
    Me donne bien un fichier résultat avec
    Donc le code que tu montres fait bien ce qu'il devrait.

    Peut être devrais-tu nous expliquer pourquoi tu veux faire ça. D’après ce que je comprends dans tes explications tu cherches ni plus ni moins qu'a copier un fichier ?

    Est-ce bien ça ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    En fait, c'est pour le traitement d'un fichier image. Le programme doit donc récupérer 240 en un unsigned char et non 2.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    J'ai résolu le problème en ajoutant une conversion avec int.

  9. #9
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Alors ceci est normal. En effet, tu demandes la lecture d'un unsigned char, donc tu ne récupères qu'un caractère.
    Ce que tu peux faire c'est le remplacer par un int:
    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
    #include <iostream>
    #include <fstream>
     
    using namespace std;
     
    int main ()
    {
        ifstream file;
        file.open ("chemin/source", ios::in);
        int cs;
        file >> cs;
        file.close();
     
     
        ofstream file2;
        file2.open ("chemin/resultat", ios::out);
        file2 << cs;
        file2.close();
    }
    et dans le cas du fichier d'exemple que tu as donné tu récupèreras 240.

    Si tu veux lire le deuxième nombre en même temps tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ifstream file;
        file.open ("chemin/source", ios::in);
        int nombre1,nombre2;
        file >> nombre1 >> nombre2;
        file.close();
    Il faut savoir comment tu désires lire le fichier, car tu as aussi la possibilité d'utiliser les fonctions getline() et get()

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 146
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Oui c'est normal parce que les opérateurs de flux sont surchargés pour être "intelligent".

    Dans ton cas, on utilise ifstream::read
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Flex4] Charger des variables contenues dans un fichier en 1er
    Par nma dans le forum Flex
    Réponses: 3
    Dernier message: 09/04/2011, 09h09
  2. Sauver et restaurer des informations contenues dans un fichier
    Par lilimilou29 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 14/06/2007, 20h08
  3. Réponses: 5
    Dernier message: 22/03/2006, 13h25
  4. récupérer des données saisies dans un fichier
    Par natie_49 dans le forum C++
    Réponses: 6
    Dernier message: 24/11/2005, 11h29
  5. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05

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