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 :

Transformer un fichier .dat en h5


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Par défaut Transformer un fichier .dat en h5
    Bonjour,
    mon fichier .DAT est de la forme:
    -0.83063E-02 0.19874E-01 0.20252E-01
    -0.83063E-02 0.19874E-01 0.20252E-01
    -0.83063E-02 0.19874E-01 0.20252E-01
    ...... sur 144 lignes.

    J'ai écrit cette routine en C pour pouvoir transformer le fichier.DAT en format hdf5.
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    #include "hdf5.h"
    #include "hdf5_hl.h"
    #define RANK 2
     
     
    #include <stdlib.h>
    #include <stdio.h>
    /* #include <conio.h> */
    #include <string.h>
     
    #define MAX 100
     
    double *extract(char *TEST)
    {
            char tampon[MAX] = {0};
            int i, n = 0, j, h;
            FILE *fichier = NULL;
            double *tableau;
      float res;
     
     
     
            printf("Le fichier a ouvrir est : %s\n", "TEST.DAT");
        fichier = fopen("TEST.DAT", "r");
     
        if (fichier != NULL)
        {
            printf("L'ouverture du fichier %s a reussie !\n", "TEST.DAT");
     
                    while (fgets(tampon, MAX, fichier) != NULL)
                            n++;
     
                    printf("Le fichier contient %d valeurs.\n", n);
     
                    tableau = malloc(n * sizeof(double));
     
                    if (tableau == NULL)
                    {
                            printf("Erreur allocation !");
                            exit(0);
                    }
                    else
                    {
                            printf("Allocation reussie !\n");
                    }
     
                    rewind(fichier);
     
                    for (h=0; h<MAX; h++)
                            tableau[h] = 0.0;
     
                    for (i=0; i<n; i++)
                    {
                            fgets(tampon, MAX, fichier);
                            printf("tampon : %s\n", tampon);
     
                            tableau[i] = atof(tampon);
     
     
     
     
     
     
    			/* --------- CREATION HDF5 ----------- */
     hid_t       file_id;
     hsize_t     dims[RANK]={144,3};
     herr_t      status;
    /* /\*    int         data[]={tableau[1]}; *\/ */
     
    /* create a HDF5 file */
     file_id = H5Fcreate ("ex_lite2.h5",H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
     
     
    /*  /\* create and write an integer type dataset named "dset" *\/ */
     status = H5LTmake_dataset(file_id,"/dset",RANK,dims,H5T_NATIVE_FLOAT,tampon);
    /* data); */
     
     
     /* close file */
     status = H5Fclose (file_id);
     
    			/* --------- FIN CREATION HDF5 ----------- */
     
                    }
     
    /*                 for (j=0; j<n; j++) */
    /*                         printf("%f\n", tableau[j]); */
            }
        else
            printf("L'ouverture du fichier %s a echouee !\n", "TEST.DAT");
     
        return tableau;
     
     
    }
     
    int main(void)
    {
            int             i;
        char nf[255] = "TEST.DAT";
            double *nbre;
            nbre = extract(nf);
     
    /*         for (i=0; i<MAX; i++) */
    /*                 printf("--> %f\n", nbre[i]); */
     
     
        return 0;
    }
    Mais quand je lis mon fichier.h5 ça me donne n'importe quoi comme valeur.

    J'ai l'impression qu'il y a un conflit entre char, le float.....

    Merci pour votre aide
    Trax

  2. #2
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Par défaut
    Bonjour,

    Personne pour m'aider?

    Merci

Discussions similaires

  1. [Fortran 77] Transformer des fichiers .dat en eps
    Par feynman dans le forum Fortran
    Réponses: 2
    Dernier message: 30/04/2008, 08h37
  2. [PERL] transformation de fichier
    Par bob20000 dans le forum Langage
    Réponses: 6
    Dernier message: 27/07/2006, 11h13
  3. Réponses: 4
    Dernier message: 23/06/2005, 12h44
  4. exportation : fichiers .dat et .key
    Par Crab dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 13/09/2004, 14h51
  5. Réponses: 2
    Dernier message: 19/06/2003, 13h48

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