我正在尝试编写一个简单的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接受零作为字符?
这个说法
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,您应该看到"缺失"的数字.