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

Fortran Discussion :

[Fortran 90] Problème d'ouverture de fichier


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [Fortran 90] Problème d'ouverture de fichier
    bonjour a tous

    j'ai un petit pb en fortran 90 je suis dans une boucle do et je dois ouvrir et fermer plusieur fois le meme fichier

    alors quand je l'ouvert une premiere fois tout ce passe bien ensuite je le ferme proprement avec un close mais au moment de la reouverture j'ai un segmentation fault
    je ne comprend pas pour quoi
    merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    à première vue ça devrait marcher et sans le code, c'est difficile de voir ce qui peut clocher.
    Si tu ouvres et fermes plusieurs fois le même fichier, tu pourrais essayer un rewind(unité_fichier_à_lire) et voir si ça ne fonctionne pas mieux. Le rewind permet de remonter au premier enregistrement de ton fichier sans avoir à le fermer puis le réouvrir.
    Bon courage !

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Je suspecte fortement une corruption de mémoire entre la première ouverture et la deuxième... Ce n'est pas le fait de réouvrir le fichier qui provoque l'erreur.

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    j'utilise deja le rewind mais je suis obliger de le reouvrir
    je vois pas comment on peut le corompre etant donner qu'il est en lecture seul je fai que lire dans ce fichier

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Un segmentation fault, c'est que ton programme perd complètement les pédales.

    Ce n'est pas le fichier qui est corrompu, mais la mémoire contenant le code d'accès au fichier.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    open(1,file='generateur.txt',status='old',action='read',iostat=ierr)
    open(2,file='utile.txt',status='old',action='read',iostat=ierr)


    do i=1,3
    rewind(1)
    read(1,*)
    read(1,*)
    read(1,*,iostat=ierr) typesec,nbsection,res,tem,courant,tension,typecel
    open(3,file=typesec,action='read',iostat=ierr)

    read(3,*,iostat=ierr) dif
    read(3,*,iostat=ierr) m

    print*,typesec
    close(3)


    end do

    close(1)
    close(2)

    voici un bout de mon code mais le rewind ne fonctionne pas correctement typesec ne garde pas la meme valeur l'execution me donne cela

    TJ2-10
    TJ2-12
    Si-1

    alors que typesec devrai garder la meme valeur

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par bil31
    read(1,*,iostat=ierr) typesec,nbsection,res,tem,courant,tension,typecel
    open(3,file=typesec,action='read',iostat=ierr)

    read(3,*,iostat=ierr) dif
    read(3,*,iostat=ierr) m
    Comment sont déclarées ces différentes variables ? Y-a t'il des pointeurs, des allocatables ? Des vecteurs ?

    Citation Envoyé par bil31
    print*,typesec
    ...
    voici un bout de mon code mais le rewind ne fonctionne pas correctement typesec ne garde pas la meme valeur l'execution me donne cela

    TJ2-10
    TJ2-12
    Si-1

    alors que typesec devrai garder la meme valeur
    Est-ce bien le résultat du print ? Ces valeurs sont-elles toutes les 3 dans le fichier ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    il n'y a que des character ou des reels. Aucun pointeur ni pointeuse ni vecteur et la partie imprimée est dans le fichier mais c'est le REWIND qui ne marche pas: il ne rembobine pas le fichier.
    Comprend tu d'où cela vient il?

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    La section de code :
    • est-elle dans un sous-programme (sub ou function) ?
    • est-elle complète ? as-tu enlevé des bouts quand tu as copié ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    c'est le vrai code sans les declaration bien sur il y a pas de subroutine c un program je comprend pas le rewind normalement il revien au debut du fichier NON???

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Je comprends ta fixation sur le rewind, mais je crois que le fait que le rewind ne fait pas ce qu'il devrait faire découle d'un "dommage collatéral" d'une autre partie du programme. D'où mes questions.

    Peux-tu enlever des bouts pour isoler le problème ? Le code que tu as copié dans le forum peux être réduit comme suit sans affecter le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    open(1,file='generateur.txt',status='old',action='read',iostat=ierr)
     
    do i=1,3
       rewind(1)
       read(1,*)
       read(1,*)
       read(1,*,iostat=ierr) typesec,nbsection,res,tem,courant,tension,typecel
       print*,typesec
    end do
     
    close(1)
    Une fois ainsi réduit, y a t'il encore un problème ? Si ce n'est pas corrigé, continue à réduire en amont.

    Et j'oubliais: As-tu activé toutes les switches "debug", "bound checking", ... ?

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    voila mon code en entier


    program test
    implicit none

    integer ::ierr,i
    real,dimension(7) ::lecture,lecture2

    open(1,file='tata.txt',action='read',iostat=ierr)
    do i=1,3

    read(1,*,iostat=ierr) lecture2
    read(1,*,iostat=ierr) lecture2

    read(1,*,iostat=ierr) lecture


    print*,lecture
    rewind(1)


    end do

    close(1)

    end program test


    voila en suite mon fichier tata.txt

    5 8 7 8 9 10 11
    6 7 8 9 10 11 12
    7 8 9 10 11 12 13
    8 9 10 11 12 13 14
    9 10 11 12 13 14 15
    10 11 12 13 14 15 16
    11 12 13 14 15 16 17
    12 13 14 15 16 17 18
    13 14 15 16 17 18 19


    voila ce que je vois sur ma console

    7., 8., 9., 10., 11., 12., 13.
    10., 11., 12., 13., 14., 15., 16.
    13., 14., 15., 16., 17., 18., 19.


    donc je comprend pas vraiment le pour koi du commment

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Et moi, j'obtiens :

    7.00000000 8.00000000 9.00000000 10.0000000 11.0000000 12.0000000 13.0000000
    7.00000000 8.00000000 9.00000000 10.0000000 11.0000000 12.0000000 13.0000000
    7.00000000 8.00000000 9.00000000 10.0000000 11.0000000 12.0000000 13.0000000

    Il y a donc un problème avec ton compilateur. À moins que sur ton O/S, le rewind soit incompatible, donc sans effet avec le type de fichier que tu utilises.

    Pout ma part, j'ai testé avec Lahey 5.6 sur WinXP SP2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA - Excel] Problème d'ouverture de fichier
    Par seiryujay dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2006, 10h55
  2. [Système] Problème d'ouverture de fichier
    Par Neii Mad dans le forum Langage
    Réponses: 8
    Dernier message: 03/07/2006, 00h11
  3. Problème à l'ouverture de fichiers Word
    Par Asdorve dans le forum Word
    Réponses: 8
    Dernier message: 19/05/2006, 12h03
  4. Réponses: 5
    Dernier message: 05/05/2006, 15h08
  5. Réponses: 2
    Dernier message: 20/04/2006, 22h12

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