Transformer un fichier .dat en h5 - C - Programmation
Marsh Posté le 29-05-2013 à 16:01:27
Bonjour !
Dans votre programme, vous raisonnez en terme de lignes et non pas de valeurs, d'ailleurs, le nombre de valeurs que vous affichez est faux, car c'est le nombre de lignes que vous utilisez.
Deux cas se présentent :
* Soit le nombre de valeurs par lignes est fixe, et dans ce cas vous pouvez utiliser sscanf au lieu de atof,
* Dans le cas contraire, vous devez boucler sur le contenu de votre ligne, par exemple en cherchant le caractère qui correspond à votre séparateur (a priori l'espace) et en enchaînant les sscanf jusqu'à ce que vous soyez arrivée au bout de la ligne.
Sinon, pour répondre à votre remarque finale, la fonction atof s'arrête au premier caractère qu'elle considère comme invalide, c'est à dire qui correspond à une écriture incorrecte d'un nombre à virgule.
Bonne continuation !
Edit : Sinon, encore plus simple, après avoir ouvert votre fichier, vous enchaînez les fscanf jusqu'à ce que la fonction vous renvoie 0 ou EOF. Mais vous perdez le formatage par ligne ...
Marsh Posté le 29-05-2013 à 16:28:38
J'ai fait :
tableau[i] = sscanf (tampon, "%*s %f %f %f",&n);
Mais il ne se passe rien
Désolée je débute en C.
Pouvez-vous me l'écrire svp
Merci
Marsh Posté le 29-05-2013 à 17:20:51
En effet, je vois ça
Si on part du principe que vous avez effectivement 3 valeurs par lignes, les rares modifications à apporter sont
* au niveau du "malloc" pour "tableau", allouer 3 fois plus de place,
* La boucle "for" d'initialisation du tableau ne sert à rien
* Modification de la boucle "for" de lecture : remplacement du atof par
Code :
|
Vous rajoutez un test pour vérifier que nbLus vaut bien 3 à chaque étape et ça roule ! Il ne vous reste plus qu'à ajouter vos 3 valeurs dans le fichier H5 et, bien sûr, à désallouer la mémoire pour "tableau".
Note : Malgré l'indentation douteuse, il semble que vous écriviez les valeurs dans le fichier à chaque ligne, toujours dans le même fichier !
Bonne continuation !
Marsh Posté le 29-05-2013 à 15:49:59
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.
Mais quand je lis mon fichier.h5, ça me donne que la première colonne. Je crois que la fonction atof est limitée en nombre de caractere.
Comment je peux faire pour retranscrire les 3 colonnes en 3 floats.
Merci beaucoup
Candice