2016-09-14 6 views
-2

cpar가 선언되면이 메인strlen은 실제로 무엇을하고 있습니까?

if(nfil.lt.0)then 
    call strlen(cpar,i1,i2) 
    open(unit=10,file=cpar(i1:i2),status='old') 

에서 서브 루틴 나 strlen

 subroutine strlen(string,i1,i2) 
     character string*(*) 
     do 10 i=len(string),1,-1 
     if(string(i:i).ne.' ')then 
      i2=i 
      goto 11 
     endif 
    10 continue 
    11 do 20 i=1,len(string) 
     if(string(i:i).ne.' ')then 
      i1=i 
      return 
     endif 
    20 continue 
     return 
     end 

입니다 문자 cpar * (*)

는 이름에 관한 규칙이나 제한이 존재 하는가 cpar이 제대로 열려 있니?

내 hx263on.sens (cpar)을 읽을 수 없습니다. 왜죠?

+0

주 프로그램에서'cpar'는'cpar * (*)'이상의 선언이 필요합니다. 찾을 수 있니? – francescalus

+0

cpar는 "hx263on.sens (cpar)"또는 "hx263on.sens"또는 실제로 무엇입니까? 얼마나 걸리나요? 어떻게 인쇄하려고 했습니까? –

+0

@VladimirF 아니요, 사실 hx263on.sens라는 파일에 이름을 지정했습니다.이 파일을 입력 파일로 사용하지만 읽을 수는 없습니다. –

답변

1

이 함수는 공백이 아닌 처음과 마지막 문자를 찾습니다. 이들은 i1i2으로 반환됩니다. cpar(i1:i2)은 포트란 90의 adjustl(trim(cpar))과 같아야합니다.

이것은 필요하지 않습니다. Fortran은 어쨌든 열도록 전달 된 파일 이름을 다듬습니다. 공백으로 끝나는 파일 이름은 지원되지 않습니다.

파일을 열 수 없으면 파일이 존재하지 않거나 운영 체제에서 원하지 않는 일부 특수 문자가 포함되어있을 수 있습니다. 아니면 실제로 생각보다 다른 것을 포함하고 있습니다. 어쩌면 변수가 너무 짧거나 비슷할 수도 있습니다. cparcpar(i1:i2)의 값을 인쇄하여 확인하십시오.

+0

코드는 포트란 77입니다. –

+2

그건 별 문제가되지 않습니다. –

관련 문제