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

VC++ .NET Discussion :

Probl�me de lecture avec fread qui retourne 0


Sujet :

VC++ .NET

  1. #1
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2011
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 24
    Par d�faut Probl�me de lecture avec fread qui retourne 0
    Bonjour,
    Je cherche depuis quelque temps mais impossible encore pour moi de comprendre pourquoi fread me retourne 0 alors qu'il pourrait lire normalement les donn�es que j'observe comme correctement �crites dans le fichier avec editHexa. Je n'ai pas l'habitude d'utiliser visual studio peut �tre il y a une dr�lerie Windowsienne qui m��chappe...

    Ce que je ne comprends pas c'est que mon offset est bien de 0x96 lors du 1er appel de fread et le fichier binaire contient 0x87A octets avec le pointeur de flux � 0x201 donc fread devrait bien �tre capable de lire ces 0x96 octets m�me si ils ne correspondaient pas � ce qu'il attend les chiffres serraient juste incoh�rents mais en fait fread me retourne 0 et rend le flux (fAnaFile) � 0x87A (cad � la fin du fichier)

    le code :
    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
    23
    24
    25
    26
     
    	long lRetCode;
    	FILE *fAnaFile;
    	size_t iRetRead;
    	int iferrorReturn;
    	int ifseekret;
    	size_t offset;
    	long offset;
    	T_C32_FILTRE debugpF;
     
        fAnaFile = fopen(sAnaFile,"r");
    	if (fAnaFile != NULL)
    	{
    		offset = sizeof(T_C32_RESULT_HEADER)+(sizeof(T_C32_FILTRE)*resultIdx)+1;
            // Placer le flux au bon endroit pour lire les donnees d'un filtre
            ifseekret=fseek(fAnaFile, offset, SEEK_SET);
            // Lire les resultat d'analyse d'un filtre
    	iRetRead = fread(&debugpF, sizeof(debugpF), 1,fAnaFile);
    	perror("Erreur :");
    	iferrorReturn = ferror(fAnaFile);
            fclose(fAnaFile);
            if(iRetRead == 1)
                lRetCode=EXIT_SUCCESS;
            else
                lRetCode=EXIT_ERROR_READ_FILTER;
            }
    Pour info les structures de donn�es ecrites dans le fichier on �t� d�clar�es avec #pragma pour �viter les probl�mes d'aligement/padding :

    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
    23
    24
    25
    26
    27
    28
    29
     
     
    // Alignement sur un octet
    #pragma pack(push, 1)
    //#pragma pack(1)
     
     
    // Structure d'un filtre
    #define T_C32_FILTRE struct _T_C32_FILTRE_
    T_C32_FILTRE
    {
    	short	iNum;					 			
    ...	 
    };
     
     
     
     
     
    // Structure entete de resultat
    #define T_C32_RESULT_HEADER struct _T_C32_RESULT_HEADER_
    T_C32_RESULT_HEADER
    {
    	T_C32_PARAM	rPar;
        float	fXstep;				            // AB (ajout) : distance entre 2 mesures consecutives lue dans l'en-tête du fichier frame
    	short	iNumFiltres;					// Nombre de filtres contenus 
    ...
    };
    #pragma pack(pop)

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    "sizeof(debugpF)" vaut combien ?
    Si c'est du binaire, indiquez-le au moment de la cr�ation de fAnaFile.

  3. #3
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2011
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 24
    Par d�faut
    pr�cision : fread semble perdre les p�dales au niveau du dernier champ de la structure qui est en fait un tableau d'une autre structure :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Structure 
    #define T_C32_FILTRE struct _T_C32_FILTRE_
    T_C32_FILTRE
    {
    	short	iNumC;					 
    ...
    	T_C32_C	arrC[MAX];	 
    };
    Cela doit poser probl�me mais j'ai du mal � comprendre pourquoi...

  4. #4
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2011
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 24
    Par d�faut
    sizeof(debugpF) = 0x96

    quand on �crit :
    fAnaFile = fopen(sAnaFile,"w");
    fwrite(...)

    il ne s'agit pas forcement d'un fichier binaire?

  5. #5
    Membre averti
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    D�cembre 2011
    Messages
    24
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 24
    Par d�faut
    en effet mon probl�me �tait bien l'option "w" et "r" de fopen avec "wb" (pour l'�criture) et "rb" (pour la lecture) plus aucun probl�me.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 10
    Dernier message: 14/04/2011, 15h37
  2. R�ponses: 2
    Dernier message: 11/05/2010, 09h27
  3. probl�me lecture avec fread
    Par xeron33 dans le forum C
    R�ponses: 1
    Dernier message: 18/06/2008, 23h04
  4. R�ponses: 17
    Dernier message: 24/03/2005, 12h24
  5. [DOM] Probl�me de lecture avec DOM
    Par samios dans le forum Format d'�change (XML, JSON...)
    R�ponses: 5
    Dernier message: 29/09/2004, 15h58

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