回 帖 发 新 帖 刷新版面

主题:如何对此文件按要求读入并判断

小弟最近编程时需要在子程序中打开一数据文件利用其中的数值,无奈看了几天的fortran书也是百思不得其解,故将想法发上来,希望坛友帮帮忙!想法是将数据文件中的数据按行读入,并判断每一行的第一个数值是否与程序中预先指定的一个变量相等(假设该变量为jelem),如果相等则保存此行数据到某一数组中,以在后面使用。由提供的数据文件可以看出,程序在每次调用时符合要求的数据行共有8行,目的就是保存这有用的8行数据,并按其顺序保存在一个40维的数组(或是5*8的二维数组也行)中供程序使用。附上数据文件。谢谢您的关注!! [em2]

回复列表 (共8个回复)

沙发

10001        1        -65779.9        -65779.9        -153486
10001        2        -65779.9        -65779.9        -153486
10001        3        -61900.1        -61900.1        -144434
10001        4        -61900.1        -61900.1        -144434
10001        5        -65779.9        -65779.9        -153486
10001        6        -65779.9        -65779.9        -153486
10001        7        -61900.1        -61900.1        -144434
10001        8        -61900.1        -61900.1        -144434
10002        1        -65779.9        -65779.9        -153486
10002        2        -65779.9        -65779.9        -153486
10002        3        -61900.1        -61900.1        -144434
10002        4        -61900.1        -61900.1        -144434
10002        5        -65779.9        -65779.9        -153486
10002        6        -65779.9        -65779.9        -153486
10002        7        -61900.1        -61900.1        -144434
10002        8        -61900.1        -61900.1        -144434
10003        1        -65779.9        -65779.9        -153486
10003        2        -65779.9        -65779.9        -153486
10003        3        -61900.1        -61900.1        -144434
10003        4        -61900.1        -61900.1        -144434
10003        5        -65779.9        -65779.9        -153486
10003        6        -65779.9        -65779.9        -153486
10003        7        -61900.1        -61900.1        -144434
10003        8        -61900.1        -61900.1        -144434
10004        1        -65779.9        -65779.9        -153486
10004        2        -65779.9        -65779.9        -153486
10004        3        -61900.1        -61900.1        -144434
10004        4        -61900.1        -61900.1        -144434
10004        5        -65779.9        -65779.9        -153486
10004        6        -65779.9        -65779.9        -153486
10004        7        -61900.1        -61900.1        -144434
10004        8        -61900.1        -61900.1        -144434
10005        1        -65779.9        -65779.9        -153486
10005        2        -65779.9        -65779.9        -153486
10005        3        -61900.1        -61900.1        -144434
10005        4        -61900.1        -61900.1        -144434
10005        5        -65779.9        -65779.9        -153486
10005        6        -65779.9        -65779.9        -153486
10005        7        -61900.1        -61900.1        -144434
10005        8        -61900.1        -61900.1        -144434
....
....
这是数据文件中的若干行,每行5个数值,用空格隔开,再次感谢您的帮助!

板凳

读文件用Read(文件号,*)JELEMC,IDC,COC(1:3)
然后读上来就判断一下:IF(JELEMC.EQ.JELEM)

3 楼

您好!谢谢您的答复!
我昨天在子程序中加了如下的读入数据及判断语句 
     dimension stor(8,5)
      do i=1,8
          do j=1,5
            stor(i,j)=zero !zero=0.d0
          enddo
      enddo     
      if(kstep.eq.1)then   !仅在在计算的第一个分析步中读取文件
      open(1000,file="mm.dat")
      open(2000,file="nn.dat")
      do i=1,8*nel     !8*nel是文件总的数据行数
         read(1000,*)a1,a2,a3,a4,a5
         bb=a1
     if(jelem.eq.bb.or.jelem.eq.(bb-10000))then !判断是否属于符合要求的数据行
         write(2000,*)a1,a2,a3,a4,a5
         endif
      enddo
      do i=1,8
        read(2000,*)stor(i,1),stor(i,2),stor(i,3),stor(i,4),stor(i,5)
      enddo
      endif
貌似已经没有语法错误了,但是总是一运行就出现如下错误,这是什么原因呢?
错误“"Ox7c9305f8"指令引用的"Ox07380010"内存。该内存不能为read。要终止程序,请点击确定。”

4 楼

forrtl: severe (24): end-of-file during read, unit 1000, file D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\Administrator_c-Job-1_4312\mm.txt

Image              PC        Routine            Line        Source             
libifcoremd.dll    01CD7E86  Unknown               Unknown  Unknown
libifcoremd.dll    01CD0CB9  Unknown               Unknown  Unknown
libifcoremd.dll    01C5943C  Unknown               Unknown  Unknown
libifcoremd.dll    01C58F75  Unknown               Unknown  Unknown
libifcoremd.dll    01C84714  Unknown               Unknown  Unknown
standardU.dll      05B02DF7  Unknown               Unknown  Unknown
ABQSTD_Core.dll    102523CD  Unknown               Unknown  Unknown
ABQSTD_Core.dll    10491EB4  Unknown               Unknown  Unknown

出现如上的错误提示,请问是什么意思?文件数据格式与程序中指定的不一致么?请求懂的高手帮帮忙啊,谢谢了!!!

5 楼

forrtl: severe (24): end-of-file during read, unit 1000, file D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\Administrator_c-Job-1_4312\mm.txt

Image              PC        Routine            Line        Source             
libifcoremd.dll    01CD7E86  Unknown               Unknown  Unknown
libifcoremd.dll    01CD0CB9  Unknown               Unknown  Unknown
libifcoremd.dll    01C5943C  Unknown               Unknown  Unknown
libifcoremd.dll    01C58F75  Unknown               Unknown  Unknown
libifcoremd.dll    01C84714  Unknown               Unknown  Unknown
standardU.dll      05B02DF7  Unknown               Unknown  Unknown
ABQSTD_Core.dll    102523CD  Unknown               Unknown  Unknown
ABQSTD_Core.dll    10491EB4  Unknown               Unknown  Unknown

出现如上的错误提示,请问是什么意思?文件数据格式与程序中指定的不一致么?请求懂的高手帮帮忙啊,谢谢了!!!

6 楼


没人看过后给个音儿么?[em65]

7 楼

是不是出错信息不写中文都不认识……

8 楼

[quote]是不是出错信息不写中文都不认识……[/quote]
lz参看我的贴子吧,咱两一个问题

我来回复

您尚未登录,请登录后再回复。点此登录或注册