gpt4 book ai didi

format - 将 REAL 的数组行转换为逗号分隔的字符串

转载 作者:行者123 更新时间:2023-12-03 23:23:31 26 4
gpt4 key购买 nike

我有一个非常古老的 Fortran 程序,它将数据从一种文本格式转换为另一种文本格式。在一个地方,它处理分配如下的数据数组:

  real*4, allocatable   :: s(:,:) ! is the declaration
! ...
allocate (s(16,k)) ! is the allocation
! then, in a loop later on:
do i=1,k
write (7,*) (s(j,i),j=1,16)
end do

该代码的输出如下所示:

-1.375000 -1.375000 327277.0 328682.0 2.750000 0.1250000 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.0000000E+00 1.000000 5.000000 400.0000 1.000000



我需要它看起来像这样:

-1.375,-1.375,-.125,1.375,1.375,0,0,0,0,0,0,0,1,5,1,1



最重要的是我得到一个逗号来分隔字段,而不是其他空格。

使用 FORMAT声明,这怎么可能?

编辑:我注意到这一行: write (7, "(*(F8.5,:,','))") s(:,i)
...产生如下所示的输出:
 3.00000, 4.50000, 1.00000,********, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 5.00000,********, 1.00000
3.00000, 4.50000,********,********, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 5.00000,********, 1.00000

我不知道是什么 ********表示;应该在那里的字符串存储为 REAL 但评估为整数,如 10152

最佳答案

如果您的编译器具有适当级别的 Fortran 2008 支持:

do i = 1, k
write (7, "(*(G0,:,','))") s(:,i)
end do
G0对实数字段的宽度和精度使用依赖于处理器的“合理”值,没有前导或尾随空格。
*指定无限格式项,这意味着重复以下括号对中的整个格式规范,直到没有更多项为止。
:如果没有更多元素,控制描述符将终止输出处理。这避免了尾随逗号。

关于format - 将 REAL 的数组行转换为逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com