gercibee 发表于 2015-1-28 17:19:19

关于写入文件数据格式问题求助

我对数据进行了一下处理,然后想把数据重新写出来。这里面数据有科学计数数据,这一列还有正常的整数,如果是4位就写4位整数,如果大于5位就用科学计数法计数。处理完数据我也想按照这种格式写出来。
506034842    11658    1.0563e+005      1963   12    31   0    0    0    0    0    0
506034840    11649   5542                  1964   1      1   0    0    0    0    0    0
我的代码我把带科学计数这一列用 real*4 :: c(19385),读出来的
Program Watersave
   Implicit None
   Character *5 Filename
   Integer :: I, K, q
   Integer :: a(11,19358),b(19385)
   real*4 :: c(19385)

   open(10, file = "D:\a\preci.txt")
   do i = 1 , 83
   read(10, *) filename
         open(11, file = "D:\a\"//filename//".txt")
         do k = 1,19358
             read(11, *) a(1:3,k),c(k),a(4:8,k),b(k),a(9:11,k)
         end do
         open(12,file = "D:\c\"//filename//".txt")
         do q = 1, 19358
             if (30000<b(q) .and. b(q)<32700) then
               b(q) = mod(b(q),1000)
             elseif (b(q) == 32700) then
               b(q) = 0
             else
               b(q) = b(q)
             end if      
             write(12,"(3i6,e18.10,5i8,i6,3i3)")a(1:3,q),c(k),a(4:8,k),b(q),a(9:11,q)
end do
         close(12)
         close(11)
   end do
end
如果这13列都是整数的话,写 write(12,"(13i6)")都可以正常写出来。但是这个文件写出来
506034842 116580.0000000000E+00       0       0       0****************   1000
506034842 116580.0000000000E+00       0       0       0****************   0000
506034842 116580.0000000000E+00       0       0       0****************   0000
所以想请问一下,这个科学计数的文件该如何处理写出来吗?
   

fcode 发表于 2015-1-30 08:45:48

write(12,"(3i6,es18.10,5i8,i6,3i3)")a(1:3,q),c(q),a(4:8,q),b(q),a(9:11,q)

gercibee 发表于 2015-1-30 20:49:40

好的,顺利解决
页: [1]
查看完整版本: 关于写入文件数据格式问题求助