Prise en fortran erreur d'exécution: fin de fichier
J'ai récemment appris comment travailler avec les fichiers de base en Fortran
et j'ai supposé que c'était aussi simple que:
open(unit=10,file="data.dat")
read(10,*) some_variable, somevar2
close(10)
Donc je ne peux pas comprendre pourquoi cette fonction que j'ai écrit n'est pas de travail.
Il compile bien, mais quand je le lance il imprime:
fortran runtime error:end of file
Code:
Function Load_Names()
character(len=30) :: Staff_Name(65)
integer :: i = 1
open(unit=10, file="Staff_Names.txt")
do while(i < 65)
read(10,*) Staff_Name(i)
print*, Staff_Name(i)
i = i + 1
end do
close(10)
end Function Load_Names
Je suis à l'aide de Fortran 2008 avec gfortran.
Avez-vous des sortie ou elle ne répond en rien à la première lecture?
Votre question aurait été beaucoup plus lisible, et plus probablement vaut un upvote, si vous avez utilisé des majuscules au début de tes phrases.
Votre question aurait été beaucoup plus lisible, et plus probablement vaut un upvote, si vous avez utilisé des majuscules au début de tes phrases.
OriginalL'auteur user3444034 | 2014-03-22
Vous devez vous connecter pour publier un commentaire.
Une raison commune pour l'erreur de vous signaler, c'est que le programme ne trouve pas le fichier qu'il est en train d'essayer d'ouvrir. Parfois, vos hypothèses sur le répertoire dans lequel le programme recherche les fichiers au moment de l'exécution sera mauvais.
Essayer:
err=
option dans leopen
déclaration à écrire du code pour gérer gracieusement avec un fichier manquant; sans cela, le programme se bloque, comme vous l'avez observé;ou
inquire
déclaration de comprendre si le fichier existe lorsque votre programme est à la recherche pour elle.status='old'
aussi bien, sinon ce n'est pas uneopen
erreur pour le fichier n'existe pas.Bon point @george.
OriginalL'auteur High Performance Mark
Vous pouvez vérifier si un fichier est terminé. Il est fait avec l'option IOSTAT pour instruction de lecture.
Essayez:
OriginalL'auteur user3206414
À l'aide de Fortran 2003 standard, on peut faire de la façon suivante pour vérifier si la fin de fichier est atteinte:
OriginalL'auteur Amir
Merci à tous pour votre aide, je n'ai corrigé le code:
J'avais besoin de changer
read(10,*)
àread(10,*,END=100)
donc, il savait quoi faire quand il est venu à la fin du fichier
comme il était dans une boucle je suppose.
OriginalL'auteur user3444034
Alors votre problème est que le fichier a été un vecteur ligne, et il est probable
en vous donnant cette erreur immédiatement après la lecture du premier élément, comme @M. S. B. a été suggéré.
Si vous avez un fichier avec une matrice NxM et vous le lire de cette façon (F77):
il va charger la première colonne de votre fichier dans la première ligne de la matrice et vous donnera une erreur dès qu'il atteint la fin du fichier de la première colonne, parce que la boucle s'applique à lire les lignes et il n'y a pas plus de lignes (si
N<M
quandj=N+1
par exemple). Pour lire les différentes colonnes, vous devez utiliser une boucle implicite, c'est pourquoi votre solution a fonctionné:OriginalL'auteur Alf Pascu