我需要从表中读取一些值。这些是前五行,让您了解它的外观:
1 + 3 98 96 1
2 + 337 2799 2463 1
3 + 2801 3733 933 1
4 + 3734 5020 1287 1
5 + 5234 5530 297 1
我的兴趣是每行的前四列。我需要将这些读入数组。我使用了以下代码:
program ----
implicit none
integer, parameter :: totbases = 4639675, totgenes = 4395
integer :: codtot, ks
integer, dimension(totgenes) :: ngene, lend, rend
character :: genome*4639675, sign*4
open(1,file='e_coli_g_info')
open(2,file='e_coli_g_str')
do ks = 1, totgenes
read(1,100) ngene(ks),sign(ks:ks),lend(ks), rend(ks)
end do
100 format(1x,i4,8x,a1, 2(5x,i7), 22x)
do ks = 1, 100
write(*,*) ngene(ks), sign(ks:ks),lend(ks), rend(ks)
end do
end program
程序末尾的循环是打印前一百个条目以测试它们是否被正确读取。问题是我得到了这个垃圾(第四行是问题):
1 + 3 757934891
2 + 337 724249387
3 + 2801 757803819
4 + 3734 757803819
5 + 5234 757935405
显然,第四列是很遥远的。事实上,我在正在读取的文件中的任何地方都找不到这些值。我正在为 Ubuntu 12.04 使用 gfortran 编译器。如果有人能指出我正确的方向,我将不胜感激。我确信我很可能错过了一些非常明显的东西,因为我是 Fortran 的新手。