Bonjour
J'espère que ma question ne se trouve pas déja dans les archives, j'ai recherché à la main puis avec le moteur sans trouver. Désolé si c'est le cas.
En gros j'ai un fichier de donnée que j'ai enregistré au format csv, les différentes valeurs sont donc séparées par des virgules. Je voudrai savoir si vous connaissez un moyen pour que le caractère virgule soit reconnu comme un séparateur lors de la lecture dans fortran90?
Je vais vous donner un exemple de ce que je fais pour montrer pourquoi je demande ca.
J'ai dans mon fichier de données des lignes de type:
"toto,374.2,1438.558413,24.87403093,142.4000" *ligne de type 1
"t,380.6,1438.079111,24.87407659" *ligne de type 2
Pour l'instant ma lecture se fait en utilisant :
Avec dummy de type CHAR(1) un string de dimension 1 parce que la plupart des lignes ne contiennent pas de string au debut (type 2) et pour l'instant j'ai une subroutine qui va d'abord chercher la ligne de type 1 et commence a lire les donnees en utilisant la lecture ci-dessus a ligne suivante, de type 2 (donc sans probleme).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 wfile=10 OPEN(UNIT=wfile,FILE=namefile1,FORM="FORMATTED",STATUS="OLD",ACCESS="sequential",ACTION="read") READ(wfile,FMT='(A,F7.2,F12.8,F12.8)') dummy,tread, xread, pread READ(wfile,FMT='(A,F7.2,F12.8,F12.8)') dummy,tread, xread, pread close(wfile)
Maintenant je voudrais lire les donnees en position 2 et 3 sur toutes les lignes (meme celles de type 1) . Avec la ligne de commande precedente, ca ne marche pas avec les lignes de type 1 puisque apres avoir lu 1 caractere, il commence a lire le reste du texte pour l' affecter dans un reel, donc plantage. Si je change le type de dummy pour char(50) en supposant que 50 soit la longueur de la chaine de caractere dans le type 1, c' est pour le type 2 que la partie numerique va etre lue dans dummy.
Du coup il serait tres pratique que la virgule soit reconnue comme un separateur : la lecture prendrait un string de longueur 1, puis sauterait apres le separateur pour lire la deuxieme valeur.
Est ce que vous auriez une piste sur comment faire ca ? Ca doit etre simple mais j'ai pas trouve de reponse dans les cours de fortran que j'ai pu trouver en ligne.
En regle generale, existe-t-il un separateur naturel dahs fortran90 lors de lecture ou est-on toujours oblige de connaitre la longueur de ce qu' on veut lire ?
Merci d' avance pour votre aide !
Partager