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 :

Rencontre EOF inattendue


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 45
    Par défaut Rencontre EOF inattendue
    Bonjour à tous,

    J'essaye de lire un fichier txt, malheureusement il rencontre EOF alors qu'il devrait en être encore loin...
    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
     
      integer,parameter :: nzonal    =  43200        
      integer,parameter :: nmerid    =  21600            
      integer,parameter :: nland = 2               
     
     
      character(len=264) :: fnin              
      character(len=264) :: fnout             
     
     
    ! inout file stuff
      integer,parameter :: iunit = 10
      integer,parameter :: junit = 20
      integer :: ios,iopen
     
    ! misc
      integer,dimension(nland)             :: land
      integer(kind=1), dimension(nzonal) :: indictot
     
     
     
      fnin="file.txt"
      fnout="out.txt"
     
      open (iunit,file=trim(fnin),iostat=ios,status='old',action='read')
      if (ios /= 0) then
         stop 'Problem opening input file'
      end if
      open (junit,file=trim(fnout))
     
      do i=1,nmerid
         if(mod(i,100).eq.0) print *,int(100.*float(i)/float(nmerid)),"%"
         indictot=0
         read(iunit,*) indictot(1:nzonal)
         do j=1,nzonal
              if(indictot(j).ne.1) indictot(j) = 0                  	     
         enddo
         write(junit,*) (indictot(j),j=1,nzonal)
      enddo
     
    close(junit)
    close(iunit)
    Ce qui donne à l'éxecution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              25 %
    Fortran runtime error: End of file
    J'ai vérifié 99 fois le fichier d'entrée et ces dimensions sont bonnes.
    Je peux fournir le fichier txt si nécessaire.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    de la même manière que tu as transmis en argument iostat à ton open, tu peux transmettre en argument iostat au read qui te pose problème.

    ça peut être utile par exemple pour afficher la dernière ligne qui a été lue correctement.

    j'ai bien sûr eu plusieurs fois ce problème, cela vient très très rarement du fichier. es-tu sûr de l'étendue de tes boucles de lecture (nmerid) voir nzonal ?

  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
    Par défaut
    Le problème vient presque certainement du format de lecture libre (list-directed), soit l'étoile * dans le read. Va voir la discussion suivante :

    http://www.developpez.net/forums/d53...cture-fichier/

    surtout le message #6.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 45
    Par défaut
    Citation Envoyé par Sylvain Bergeron
    surtout le message #6.
    Merci, effectivement c'est un message instructif. Vive la portabilité !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/02/2016, 12h42
  2. [DOS] goto inattendu
    Par isidore dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 26/11/2009, 00h06
  3. Fonction If avec rs.eof problème
    Par M1000 dans le forum ASP
    Réponses: 5
    Dernier message: 24/03/2004, 17h10
  4. modification de fichier EOF
    Par scorbo dans le forum C
    Réponses: 9
    Dernier message: 28/11/2003, 11h35
  5. RecordSet en EOF
    Par jfphan dans le forum ASP
    Réponses: 3
    Dernier message: 06/11/2003, 16h47

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