在Fortran中写入空白而不是整数
我有一些110元素向量。它们有时具有从在Fortran中写入空白而不是整数,fortran,integer,character,Fortran,Integer,Character,我有一些110元素向量。它们有时具有从0到9的值,但其默认值为-1。如果单元格的值为-1,我想打印一个空白;否则打印它们的值 我在一个输出行中打印了几件东西,因此我不能将if与两个writes一起使用。将值传递给字符向量很有效,但我忍不住认为一定有更好的方法 我的尝试: program integer_print_blank_test implicit none integer, dimension(9) :: longint character(len=3), dimens
0
到9
的值,但其默认值为-1
。如果单元格的值为-1
,我想打印一个空白;否则打印它们的值
我在一个输出行中打印了几件东西,因此我不能将if
与两个write
s一起使用。将值传递给字符
向量很有效,但我忍不住认为一定有更好的方法
我的尝试:
program integer_print_blank_test
implicit none
integer, dimension(9) :: longint
character(len=3), dimension(9) :: longchar
integer :: i, j
do i = 0, 2
write(*,*) (longint(3*i+j), j = 1, 3)
end do
longint = -1
longint(1) = 1
longint(4) = 3
longint(9) = 7
write(*,*) "longint"
do i = 0, 2
write(*,*) (longint(3*i+j), j = 1, 3)
end do
do i = 1, 9
write(longchar(i),"(I3)") longint(i)
end do
write(*,*) "longchar"
do i = 0, 2
write(*,*) (longchar(3*i+j), j = 1, 3)
end do
write(*,*) "only positives in longchar"
longchar = " "
do i = 1, 9
if (longint(i) > -1) then
write(longchar(i),"(I3)") longint(i)
end if
end do
do i = 0, 2
write(*,*) (longchar(3*i+j), j = 1, 3)
end do
end program integer_print_blank_test
你可能认为这是一个更好的方法。定义一个函数,例如
ELEMENTAL FUNCTION borf(int) RESULT(str)
INTEGER, INTENT(in) :: int
CHARACTER(len=2) :: str
str = ' '
IF (int>-1) WRITE(str,'(i2)') int
END FUNCTION borf
像这样使用它
WRITE(*,*) borf(longint)
你可能认为这是一个更好的方法。定义一个函数,例如
ELEMENTAL FUNCTION borf(int) RESULT(str)
INTEGER, INTENT(in) :: int
CHARACTER(len=2) :: str
str = ' '
IF (int>-1) WRITE(str,'(i2)') int
END FUNCTION borf
像这样使用它
WRITE(*,*) borf(longint)
如何声明函数?什么意思?如何声明函数?你把我写的东西复制到你的源文件中(当然是在正确的地方),然后编译好。如果你不知道怎么做,你可能应该问另一个问题,这不是我可以在评论中教你的。我该如何声明函数?你是什么意思?我该如何声明函数?你把我写的东西复制到你的源文件中(当然是在正确的地方),然后编译好。如果你不知道怎么做,你可能应该问另一个问题,这不是我可以在评论中教你的。