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 :

fonction fread


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut fonction fread
    Bonsoir à tous,

    J'applique le code suivant:
    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
    22
     
    #include <stdio.h>
     
    main()
    {
        char td[30];
        int nbo, i;
        char nomFichier[21];
     
        FILE *fichier;
     
        printf("nom du fichier à lister : ");
        scanf("%20s", nomFichier);
     
        fichier = fopen(nomFichier, "r");
     
        nbo = fread(td, sizeof(char), 30, fichier);
        for (i=0; i<29; i++) printf(" %c", td[i]);
        printf("\n");
        fclose(fichier);
     
    }
    A un fichier très simple dont le contenu est le suivant:
    ABCDEF
    HIJKL
    A l'exécution, j'obtiens le résultat suivant:
    A B C D E F
    H I J K L
    8 , ?
    Alors que je m'attendais à voir le contenu du fichier tel quel. Sauriez-vous m'expliquer pourquoi?
    Merci !

  2. #2
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Points : 380
    Points
    380
    Par défaut
    salut !serait plus facile de t'indiquer un espace surnuméraire dans la chaîne de format avec un numero de ligne. utilise les balises code (le '#' au dessus de la boîte de saisie).

    A+

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    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 128
    Points : 33 053
    Points
    33 053
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    tu déclares un tableau de 30 char sur la stack, ils prennent une valeur par défaut indéterminée.
    Quand tu lis ton fichier, tu lis au maximum 30 caractères du fichier, ton fichier est plus court et il en lit moins (bien faîte cette fonction ), il les stocke dans ton tableau td mais les valeurs suivantes ne sont pas affectées. Si tu lis 15 caractères dans le fichier, les 15 premiers caractères sont mis dans td, mais les 15 suivants gardent leur valeur par défaut.
    Et comme tu boucles sur la totalité du tableau et non la taille du fichier, les valeurs par défaut ressortent.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Absolument

    La bonne manière d'imprimer serait :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
        for (i=0; i<nbc; i++) printf(" %c", td[i]);

  5. #5
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    En effet. Merci pour vos réponses et bonnes soirée.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    -> Penses à indiquer que le topic est résolu <-

Discussions similaires

  1. Fonction fread
    Par algoverage dans le forum Débuter
    Réponses: 3
    Dernier message: 15/01/2012, 11h08
  2. Réponses: 6
    Dernier message: 30/12/2011, 22h14
  3. Probleme sur les fichiers (fonction fread)
    Par anoir dsr dans le forum C
    Réponses: 7
    Dernier message: 27/01/2011, 14h31
  4. parametrage fonction fread
    Par sone47 dans le forum C
    Réponses: 3
    Dernier message: 05/03/2007, 15h22
  5. Les fonctions fread et fwrite
    Par Sara83 dans le forum MATLAB
    Réponses: 1
    Dernier message: 16/10/2006, 12h54

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