【问题标题】:Is it possible to output a variable with zero value as blank in Fortran?是否可以在 Fortran 中将零值的变量输出为空白?
【发布时间】:2017-02-10 15:50:28
【问题描述】:

我想在格式化文件中输出实变量。如果变量不为零,则使用格式语句。但如果变量为零,则只输出空格,类似于 Iw.0 所做的。是否可以在格式声明中做到这一点?谢谢你。

【问题讨论】:

  • 我不是 fortran 专家,但我认为您可能需要通过 IF 语句检查您感兴趣的变量,如果它们等于零,则执行具有特定格式的 WRITE 命令声明做你想做的事。
  • 谢谢,罗恩。这太复杂了,因为我有很多变量。

标签: variables fortran output


【解决方案1】:

不,不是使用格式语句,但是通过将值写入字符串并进行处理,这很容易做到。下面是一个演示。可能最好放在子程序中。

program demo

   real, dimension (6) :: values = [ 1.0, 2.0, 0.0, 4.0, 0.0, 6.0 ]
   character (len=100) :: string
   integer :: pos

   write (string,'( 6 (1X, F4.1 ) )' )  values
   write (55, '(A)' )  trim (string)

   MakeBlanks: do

      pos = index (string, "0.0")

      if ( pos < 1 )  exit MakeBlanks

      string (pos:pos+2) = "   "

   end do MakeBlanks

   write (55, '(A)' )  trim (string)

end program demo

【讨论】:

  • 谢谢,M. S. B. 我能够使用您的方法来做我想做的事。请记住,Index(string, "0.0") 只能找到字符串中的第一个“0.0”。
  • 是的,重新索引查找第一个“0.0”。这就是为什么演示显示循环中使用的索引替换找到的第一个“0.0”,检查另一个等,然后在没有更多时退出。
  • 你的演示很棒。我没有意识到前面的“0.0”已经被空白替换了。所以我不得不使用 string(i:j) 之类的东西来处理字符串中不同位置的“0.0”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多