Fortran:整数到字符串示例

stu*_*ity 2 fortran

我正在尝试编写一个简单的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
Run Code Online (Sandbox Code Playgroud)

所以我定义了字符: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
Run Code Online (Sandbox Code Playgroud)

注意事项81.这应该是第一次给810000,并打印"hobla".并第二次给810900并打印"fobla".但这没有发生!

任何人都可以告诉我如何让myString接受零作为字符?

Hig*_*ark 5

这个说法

write(myString,'(i10)') k
Run Code Online (Sandbox Code Playgroud)

将k的值写入10个字符的字段.由于k只有6位有效数字,因此前4个字符myString用空格填充.然后将前6个字符myString(即4个空白和数字8和1)分配给变量a,b,c,d,e,f并打印出来 - 4个空白和2个数字.

尝试打印位置7..10中的其他字符myString,您应该看到"缺失"的数字.