2013-01-11 6 views
0

fortran77을 사용하여 텍스트 파일을 문자열로 읽을 수 있습니까? 는 사실은 다음과 같은 형식의 개체 N1, N2 ..있는 주문 반면fortran77을 사용하여 문자열로 텍스트 파일 읽기

Some comments 
Some comments 

n1 m1 comment_with_unknown_number_of_words 
..m1 lines of data.. 

n2 m2 comment_with_unknown_number_of_words 
..m2 lines of data.. 
and so on 

에 텍스트 파일이 있습니다. m1, m2, ..는 각각 이러한 객체에 대한 데이터가 포함 된 행 수입니다. 또한 추가 조사를 위해 각 개체의 설명을 저장하려고합니다.

어떻게 처리 할 수 ​​있습니까? 미리 감사드립니다.

+0

가변 길이 '문자열'이없는 FORTRAN77에서이 작업을 수행하는 것은 약간 까다 롭습니다. 왜 오, 왜 Fortran의 최신 버전을 쓰고 있습니까? 이미 2013 년입니까? 개인적으로 나는 더 이상 사람들이 FORTRAN77을 쓰는 것을 돕지 않으며 비 윤리적입니다. –

+0

@HighPerformanceMark 덕분에 많은 노력을 할 것입니다. 그리고 어느 포트란에서 더 쉽게 할 수 있습니까? 포트란 90? –

+0

컴파일러가 구현 한 Fortran 버전이 무엇이든간에. 이상적으로는 이전에 기술 보고서에 정의되어 있고 때로는 비표준 방식으로 광범위하게 구현 된 2003 표준에 포함 된 다양한 길이의 문자 변수를 구현하는 버전이 필요합니다. –

답변

0

나는 믿을 수 없어 아무도

------------ 원래의 대답은 나의 사과이 사실에만 주석의 첫 번째 단어를 잡고 ... ..이 나를 호출되지 ----

F77을 권장하지 않지만이 역시 문제가 아닙니다. 가장 긴 주석을 담고 목록으로 지정된 읽기를 사용할 수있을만큼 char 변수를 선언하십시오.

integer m1,n1 
char*80 comment 

... 
read(unit,*)m1,n1,comment 

당신이 여분의 공백을 잔뜩 패딩없이 다시 밖으로을 작성하려는 경우

노력이 조금 있지만 거의 세상의 끝 이잖아.

f77에서 전혀 수행 할 수없는 작업은 직접 액세스 읽기 작업을 거치지 않는 한 파일 끝에 줄의 끝에 공백이 있는지 여부를 식별하는 것입니다.

------------ 개선 대답

어떤 문자열 다음 문자열에서 정수를 읽을 때 당신은 전체 라인을 읽어 수행해야합니다

read(unit,'(a)')comment 
read(comment,*)m1,n1 

이 시점에서 comment은 두 개의 정수를 포함한 전체 라인을 포함합니다 (아마 당신을 대신 할 것입니다). 실제 문자열을 없애고 싶다면 약간의 코딩이 필요합니다 (문자열을 단어로 나눌 수있는 ~ 40 줄의 서브 루틴이 있음). interesed 경우 나는 게시 할 수 있지만 더 현대적인 컴파일러와 코드가 작동하는지 확인하는 것이 좋습니다.

+0

덕분에 많은 도움이되었습니다. 나는 f77을 사용하고 싶지 않다. 그러나 수천 줄의 코드가있는 이전 모델은 f77로 작성되었으며 새로운 포트란 코드가 제대로 작동하지 않을지 걱정됩니다. –