2010-12-28 7 views
7

나는 fortran에서 간단한 출력을 작성하고 있지만 공백 구분 기호가 필요합니다. 그러나 다음 문을 사용하는 경우 :fortran에서 숫자 출력을 왼쪽 정렬 할 수 있습니까?

format(A20,ES18.8,A12,ES18.8) 

을 나는 다음과 같은 출력을 얻을 :

p001t0000    3.49141273E+01obsgp_oden  1.00000000E+00 

내가이 선호 :

p001t0000   3.49141273E+01 obsgp_oden 1.00000000E+00 

내가처럼 (폭 음수 값을 사용하여 시도 Python)하지만 주사위는 없습니다. 그렇다면 숫자를 왼쪽으로 정당화 할 수있는 방법이 있습니까?

미리 감사드립니다.

답변

7

특히 아름다운 방법은 없습니다. 그러나 내부 WRITE 문을 사용하여 숫자를 텍스트 문자열 (이전에는 ENCODE 문으로 수행)로 변환 한 다음 텍스트를 조작하면 필요한 작업을 수행 할 수 있습니다. 인용

http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node168.html

내부 파일 WRITE는 일반적으로 예를 들어 적합한 포맷 사양을 사용하여 문자열을 수치로 변환하는 데 사용 이다

CHARACTER*8 CVAL 
    RVALUE = 98.6 
    WRITE(CVAL, '(SP, F7.2)') RVALUE 

쓰기 문은 문자 변수 CVAL을 문자 '+98.60'으로 채 웁니다 (참고 :은 숫자의 끝에 각각 하나씩 비어 있습니다. 첫 번째 숫자는 이 7 자의 필드에서 오른쪽 정렬이되고, 두 번째 숫자는 레코드가 선언 된 길이가 8 자로 채워지기 때문입니다.

숫자는 다양한 방식으로 더욱 를 처리 할 수 ​​ 문자 스트링으로 설정되면 이것은 예를 들어,에 왼쪽 정렬 번호 쓸 것이 가능하게 부 (7)에 바와 필드, ...

+0

나는 더 우아한 뭔가를 원했지만 유사한 해결책을 택한 것으로 보였습니다. 답변 주셔서 감사합니다 @ubuntourist – mishaF

3

이것은 Fortran 95에서는 더 쉽지만 사소하지는 않습니다. 쓰기 문을 사용하여 문자열에 번호 나 다른 항목을 씁니다 (첫 번째 대답과 동일). 그런 다음 Fortran 95 내장 "ADJUSTL"을 사용하여 문자열의 공백이 아닌 문자를 왼쪽으로 조정하십시오.

1

공백을 남기기 위해 왼쪽 정렬 번호 대신 출력 필드 사이에 공백을 넣으려면 간단히 X 편집 설명자를 사용할 수 있습니다. 예를 들어

format(A20,4X,ES18.8,4X,A12,4X,ES18.8) 

은 각 필드와 다음 필드 사이에 4 개의 공백을 삽입합니다. 표준에서는 한 공간에 1X이 필요하며 현재 컴파일러 중 일부는 비표준 X도 허용합니다.

2

단순한 Fortran 쓰기 형식 (LJ가 아님)을 작성한 후 내 방법 (나는 동굴 여자와 같은 프로그램)을 사용하고 있으며, Excel (csv)과 ultraedit를 사용하여 공백을 제거합니다 효과적으로 원하는 LJ를 쉼표로 직접 가져옵니다 (필자는 특정 소프트웨어 가져 오기에 필요한 특정 가져 오기 형식이 필요함). BF

관련 문제