首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fortran95 --从格式化的文本文件中读取

Fortran95 --从格式化的文本文件中读取
EN

Stack Overflow用户
提问于 2013-07-24 05:33:12
回答 1查看 1.1K关注 0票数 2

我需要从一张桌子上读一些值。这是前五行,让您了解一下它应该是什么样子:

代码语言:javascript
复制
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

我感兴趣的是每一行的前四列。我需要把这些读入数组。我使用了以下代码:

代码语言:javascript
复制
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

程序末尾的循环是打印前100个条目,以测试它们是否被正确读取。问题是,我得到了这个垃圾(第四行是问题):

代码语言:javascript
复制
1 +           3   757934891
2 +         337   724249387
3 +        2801   757803819
4 +        3734   757803819
5 +        5234   757935405

很明显,第四栏离我们很远。实际上,我在读取的文件中任何地方都找不到这些值。我正在为Ubuntu12.04使用gfortran编译器。如果有人能给我指明正确的方向,我将不胜感激。我相信我很可能错过了一些很明显的事情,因为我是新来的Fortran。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 06:07:56

Fortran格式是固定格式(传统上,有些更新的东西我不会在这里介绍),也就是说,它们最适合固定列的文件格式。例如,列N总是从字符位置M开始,没有ifs或但是。如果您的文件格式是“空闲格式”-like,即列由空格分隔,那么使用列表格式读取数据通常更容易,也更健壮。也就是说,尝试将您的读循环作为

代码语言:javascript
复制
do ks = 1, totgenes
  read(1, *) ngene(ks), sign(ks:ks), lend(ks), rend(ks)
end do

此外,作为一个一般的建议,当打开你自己的文件,从单元10开始,从那里向上。Fortran实现通常使用一些低编号的单元作为标准输入、输出和错误(常见的选择是单元1、5和6)。你可能不想改变方向。

PS 2:我还没有尝试过您的代码,但是您似乎在符号变量中出现了边界溢出。它的长度为4,但是你把它分配给索引k,它一直持续到整个基因。当您在Ubuntu12.04(即gfortran4.6)上使用gfortran时,在使用"-O1 -Wall -g -fcheck=all“选项进行编译时

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17825929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档