2016-10-16 4 views
1

Fortran을 사용하여 CFD 얕은 물 소프트웨어에서 사용할 서브 루틴을 만들고 있습니다.텍스트 파일에서 숫자를 읽을 수 없습니다.

나는이 값을 읽고 저장된 값을 사용하기 위해이 코드를 작성했다. 나는있는 그대로의 코드를 실행하면

PROGRAM hieto 

! Calcula la precipitacion efectiva en funcion del tiempo 
!IMPLICIT NONE 

real::a 

!Abrir CSV 
!OPEN(UNIT=10,FILE="datos.txt",FORM="formatted",STATUS="replace",ACTION="readwrite",ACCESS='sequential') 
open(unit=10, file='datos.txt') 

!Leer el archivo 
read(10, *, iostat=ios)a 
print*,ios 
print*, a 
close (UNIT=10) 

END PROGRAM hieto 

내 텍스트 파일 datos이이

1 

2 

3 

처럼 보이는, 내가

-1 
0.0000000000 
Process return 0 (0x0) execution time: 0.002 s 

은 행의 첫 번째 숫자는 하나가 다음과 같은 출력을 얻을 하나는 0이 아니므로, 왜 이런 일이 발생하는지 알 수 없습니다. 내가 읽기 문에서 iostat=ios를 제거하면

는, 나는 다음과 같은 오류 얻을 : 내가 읽기 문에 end=3을 추가하는 시도 그래서 내가 여기에 몇 가지 답변을 읽고

At ine 13 (the line od the read stament) of file /home/Dropbox/scripts_tesis/fortran/hieto_telemac.f90 (unit=10, file=datos.txt') 
Fortran runtime error: end of file. 
Proceess returned 2 (0x2) 

을, 또한 내 텍스트를 종료 끝에 빈 줄이있는 파일. end=3은 3이 정의 된 레이블이 아니며 텍스트 파일에 빈 행을 넣는 것은 아무런 효과가 없다는 오류를 제공합니다.

우분투 16.04 LTS와 Gfortran 컴파일러를 사용하고 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나이 글을 읽었을 때 파일 끝 (EOF)까지 어떻게 읽습니까? 이 위키 포트란의 일부 (http://fortranwiki.org/fortran/show/FAQ). 코드를 실행하도록 변경했지만 이전에이 코드를 시도했습니다. –

답변

4

파일은 비어 있습니다.

해당 디렉토리에 실제로 datos.txt이라는 파일이 있는지 확인하십시오. 정확한 이름에주의하십시오. datos.txt이고 단지 datos은 같은 것이 아닙니다.

STATUS="replace"을 포함하는 주석 처리 된 명령으로 이전에 열려고 시도한 경우 이전 파일은 으로 바뀌었을 것입니다.

파일이 비어 있기 때문에 유용하지 않은 것이 있습니다. iostat이 0이 아니고 -1이면 읽는 변수의 값은 정의되지 않습니다. 따라서 a은 정의되지 않았습니다. 다시 말하지만 파일이 비어 있기 때문입니다.

또한 스택 오버플로에서 어딘가에서 보았으므로 맹목적으로 코드에 end=3을 넣을 수는 없습니다. 먼저해야 할 일을 이해해야합니다. iostat=end=을 결합 할 이유는 없습니다. iostat으로 충분합니다.

+0

고맙다, 나는이 물건을 시험 할 것이다. –

+0

괜찮아요, 제 잘못을 저질렀습니다. 다시 한 번 감사드립니다. –

+0

그리고 내가 당신의 글을 어떻게 편집했는지보세요. "I"라는 단어를 대문자로 사용하십시오. 쉼표 (',') 앞에 공백을 넣지 마십시오. 문장을 대문자로 시작하십시오. 귀하의 모국어가 비슷한 규칙을 가지고 있다고 확신합니다. –

관련 문제