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 :

petit problème avec fread


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 117
    Points : 76
    Points
    76
    Par défaut petit problème avec fread
    bonsoir,

    voilà j'ai un petit problème avec fread, en fait mon programme doit ouvrir un fichier contenant un mot de passe, puis le comparer avec celui entré par l'utilisateur etc, mais bon pour l'instant il se contente de lire le fichier et d'afficher le mot de passe inscrit dedans.

    voilà 2 versions du code (le mot de passe du fichier ne peut pas dépasser 16 caractères) :

    avec celle ci, il m'affiche 3 caractères supplémentaires (au lieu d'afficher 12345678 il affiche 12345678ç;>)

    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
    #include <iostream>
    #include <conio.h>
     
    using namespace std;
     
    int main()
    {
    FILE* fichier;
    char szBuffer[16];
    if((fichier = fopen("mdp001.txt","r")) != NULL)
    { 
    fread(szBuffer, 16, 1, fichier); 
    cout<<szBuffer;
    }
    getch();
    }
    et avec celle ci, il ne m'affiche pas le dernière caractère (au lieu d'afficher 12345678 il affiche 1234567)

    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
    #include <iostream>
    #include <conio.h>
     
    using namespace std;
     
    int main()
    {
    FILE* fichier;
    char szBuffer[16];
    if((fichier = fopen("mdp001.txt","r")) != NULL)
    { 
    fread(szBuffer, strlen(szBuffer), 1, fichier); 
    cout<<szBuffer;
    }
    getch();
    }
    quelqu'un peut-il m'aider ?
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int ret = fread(szBuffer, 16, 1, fichier);
    szBuffer[ret] = 0;
    fread retourne le nombre d'octets lut du fichier. Il te suffit d'ajouter le \0 dans ton buffer pour terminer la chaine.

    En c++, il est recommande d'utiliser les fstream pour manipuler les fichiers.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Plutôt que de faire des longs discours sur tout ce qui ne va pas, voilà comme il faudrait faire en C++ (et tu avoueras que c'est bien plus simple / plus sûr) :

    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
    20
    21
    #include <iostream>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    int main()
    {
        ifstream fichier("mdp001.txt");
     
        if (fichier)
        {
            string szBuffer;
            fichier >> szBuffer;
            cout << szBuffer;
        }
     
        cin.get();
     
        return 0;
    }

Discussions similaires

  1. Petits problèmes avec une CListCtrl
    Par vanitom dans le forum MFC
    Réponses: 2
    Dernier message: 17/11/2005, 11h45
  2. Un petit problème avec pop
    Par Paulinho dans le forum C++
    Réponses: 4
    Dernier message: 13/11/2005, 20h57
  3. Petit problème avec Line Input
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2005, 12h47
  4. (Petit ?) problème avec une page contenant du Flash
    Par ologram dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 18h45
  5. Petit problème avec SDL
    Par Nyarlathotep dans le forum C
    Réponses: 10
    Dernier message: 01/07/2005, 09h10

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