練習用に、簡単なFortranコードを書こうとしています。範囲内の数値を乗算することになっています。毎回、同じ数字で構成されているかどうかを確認したいので、結果の積は文字列に変換されます。
整数を文字列に変換し、文字列のコンポーネントを入力する方法をテストしたところ、すべてが正しく機能していました。次に、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の1つに格納しました。しかし、最初の2つだけが正しく機能しているようで、残りは保存されていません。
出力:
k = 810000
myString = 810000
81
fobla
k = 810900
myString = 810900
81
fobla
81に注意してください。これは初めて810000を与えることになっていて、「hobla」を印刷します。そして、もう一度810900を与えて、「fobla」を印刷します。しかし、これは起こりませんでした!
myStringがゼロを文字として受け入れるようにする方法を誰かに教えてもらえますか?