[Fortran90] lecture de données
Fermé
jdeha
Messages postés
3
Date d'inscription
vendredi 4 mars 2011
Statut
Membre
Dernière intervention
7 mars 2011
-
4 mars 2011 à 11:13
jdeha Messages postés 3 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 7 mars 2011 - 7 mars 2011 à 21:21
jdeha Messages postés 3 Date d'inscription vendredi 4 mars 2011 Statut Membre Dernière intervention 7 mars 2011 - 7 mars 2011 à 21:21
A voir également:
- [Fortran90] lecture de données
- Confirmation de lecture whatsapp - Guide
- Accusé de lecture gmail - Guide
- Effacer les données de navigation - Guide
- Reinstaller windows sans perte de données - Guide
- Accusé de lecture outlook - Guide
3 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
4 mars 2011 à 12:48
4 mars 2011 à 12:48
Salut.
Pour commencer : Fortran est un mauvais choix. Qui à apprendre à programmer autant le faire en commençant par un langage pourri.
Bien sur qu'il y a l'équivalent du EOF pour les lignes, sinon comment les éditeurs sauraient que le texte doit aller à la ligne suivante. La fin de ligne est indiqué par le code ASCII 10 (en décimal), et par les caractères 10 ET 13 sous windows.
Bon courage pour réussir à faire ça avec les fonctions minables du fortran.
Ce que j'essairai de faire, c'est de stocker toute la ligne dans une seule variable string (un read ferait l'affaire ?).
Et ensuite de casser la chaine en différents membres. En tout cas bonne chance.
Il y aurait plus simple, avec une boucle si le nombre de membre est directement stocker dans le fichier.
Pour commencer : Fortran est un mauvais choix. Qui à apprendre à programmer autant le faire en commençant par un langage pourri.
Bien sur qu'il y a l'équivalent du EOF pour les lignes, sinon comment les éditeurs sauraient que le texte doit aller à la ligne suivante. La fin de ligne est indiqué par le code ASCII 10 (en décimal), et par les caractères 10 ET 13 sous windows.
Bon courage pour réussir à faire ça avec les fonctions minables du fortran.
Ce que j'essairai de faire, c'est de stocker toute la ligne dans une seule variable string (un read ferait l'affaire ?).
Et ensuite de casser la chaine en différents membres. En tout cas bonne chance.
Il y aurait plus simple, avec une boucle si le nombre de membre est directement stocker dans le fichier.
jdeha
Messages postés
3
Date d'inscription
vendredi 4 mars 2011
Statut
Membre
Dernière intervention
7 mars 2011
4 mars 2011 à 13:20
4 mars 2011 à 13:20
Merci pour la réponse.
Nous avions globalement le choix entre Fortran et C. Les deux langages sont similaires et ni l'un ni l'autre n'est vraiment adapté pour la lecture de données.
Je suis conscient qu'il existe des codes signalant la fin de la ligne, mais ce n'est malheureusement en rien comparable à un bête "EOF" qu'on peut gentiment placer dans une condition logique. Nous avons essayé de jouer avec les options "ADVANCE=" et "IOSTAT=" mais sans succès.
Et bien entendu, le nombre de membres n'est pas stocké dans le fichier. Ce serait dommage de nous simplifier la vie... ;-)
Nous allons essayer de trouver une autre solution, éventuellement repasser en C (mais je pense qu'il n'existe pas non plus de fonction "end-of-line")...
P.S.: je n'ai pas très bien compris l'histoire d'"apprendre à programmer" - la phrase n'était pas fort claire. Cela fait 5 ans que nous programmons en C, Fortran, MATLAB, et éventuellement en Java et C++, donc il n'est pas vraiment question d'apprendre à programmer... :-)
Nous avions globalement le choix entre Fortran et C. Les deux langages sont similaires et ni l'un ni l'autre n'est vraiment adapté pour la lecture de données.
Je suis conscient qu'il existe des codes signalant la fin de la ligne, mais ce n'est malheureusement en rien comparable à un bête "EOF" qu'on peut gentiment placer dans une condition logique. Nous avons essayé de jouer avec les options "ADVANCE=" et "IOSTAT=" mais sans succès.
Et bien entendu, le nombre de membres n'est pas stocké dans le fichier. Ce serait dommage de nous simplifier la vie... ;-)
Nous allons essayer de trouver une autre solution, éventuellement repasser en C (mais je pense qu'il n'existe pas non plus de fonction "end-of-line")...
P.S.: je n'ai pas très bien compris l'histoire d'"apprendre à programmer" - la phrase n'était pas fort claire. Cela fait 5 ans que nous programmons en C, Fortran, MATLAB, et éventuellement en Java et C++, donc il n'est pas vraiment question d'apprendre à programmer... :-)
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
4 mars 2011 à 14:00
4 mars 2011 à 14:00
désolé pour le apprendre. Mais le C est bien plus puissant et modulaire que le fortran. Si vous connaissez les deux langages, je ne comprends même pas comment faire un tel choix !
en C, le caractère de fin de ligne est '\n', pour lire une ligne, il y a la fonction fgets http://www.manpagez.com/man/3/fgets/ il n'y a ensuite plus qu'à traiter la variable lu. Des fonctions qui pourront être utiles : sscanf sprintf qui permettent pas mal de simplification de code.
Si vous avez besoin d'aide ou de précisions, n'hésitez pas.
Si vous avez déjà un bout de code en fortran, il est possible de mixer C et Fortran dans un même programme.
en C, le caractère de fin de ligne est '\n', pour lire une ligne, il y a la fonction fgets http://www.manpagez.com/man/3/fgets/ il n'y a ensuite plus qu'à traiter la variable lu. Des fonctions qui pourront être utiles : sscanf sprintf qui permettent pas mal de simplification de code.
Si vous avez besoin d'aide ou de précisions, n'hésitez pas.
Si vous avez déjà un bout de code en fortran, il est possible de mixer C et Fortran dans un même programme.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
4 mars 2011 à 14:10
4 mars 2011 à 14:10
quelques morceaux utiles https://c.developpez.com/telecharger/
jdeha
Messages postés
3
Date d'inscription
vendredi 4 mars 2011
Statut
Membre
Dernière intervention
7 mars 2011
7 mars 2011 à 21:21
7 mars 2011 à 21:21
Merci beaucoup, on va jeter un oeil à tout ça!