연습을 위해 간단한 포트란 코드를 작성하려고합니다. 그것은 범위 내의 숫자를 곱하기로되어 있습니다. 매번 그 결과가 같은 자릿수로 구성되어 있는지보고 싶기 때문에 결과 제품이 문자열로 변환됩니다.Fortran : Integer to String 예
정수를 문자열로 변환하고 문자열의 구성 요소를 입력하는 방식을 테스트 한 결과 모든 것이 올바르게 수행되었습니다. 그런 다음 문자열 (string : number : number)을 사용하는 문자열의 구성 요소를 비교해야합니다. 그러나이 작업을 올바르게 수행 할 수있는 코드를 얻지 못했습니다. 그래서 문자를 정의
program test
implicit none
character(10) myString
character(1) a,b,c,d,e,f
integer::i,j,k
do i=900,901,1
j=900
k=i*j
write(*,*)'k =', k
write(myString,'(i10)') k
write(*,*)'myString = ', myString
a=myString(1:1)
b=myString(2:2)
c=myString(3:3)
d=myString(4:4)
e=myString(5:5)
f=myString(6:6)
print*,a,b,c,d,e,f
if (d==f) then
print*,'hobla'
else
print*,'fobla'
end if
end do
stop
end program test
:
여기서 코드 출력의 A, B, C, D, E, F는 문자열의 구성 요소를 포함. 그리고 myString (i : i)을 사용하여 각 구성 요소를 찾고 문자 a, b, c, d, e, f 중 하나에 저장합니다. 하지만 처음 두 개만 제대로 작동하고 나머지는 저장되지 않는 것 같습니다!
출력 :
k = 810000
myString = 810000
81
fobla
k = 810900
myString = 810900
81
fobla
공지 사항 (81)이은 처음 810,000 주기로 및 인쇄 "hobla"했다. 그리고 두 번째로 810900을주고 "fobla"를 인쇄하십시오. 그러나 이것은 일어나지 않았다!
누구나 myString이 0을 문자로 허용하는 방법을 보여줄 수 있습니까?
나는 이해할 수 없다. 'myString'은 0을 가지며,'write (*, *) 'myString =', myString'을 할 때 그것들을 출력합니다. 문제는 정확히 무엇입니까? – tpg2114
예, 죄송합니다. 필자가 실제로 의미하는 바는 a, b, c, d, e, f 문자가 myString의 구성 요소를 포함해야한다는 것입니다. 그러나 오직 a, b는 나머지가 무시된다는 것을 보여주고 있습니다. 그것이 81을 인쇄하는 이유입니다.나는 틀린 것이 무엇인지 여기에서 확신하지 않는다. – stupidity