24小时热门版块排行榜    

查看: 1353  |  回复: 24
当前主题已经存档。

tpp001

金虫 (著名写手)

[交流] 【求助】新手求助,不知道文件中数据有多少行怎么半?

新手求助!!
我要写一段程序,读取文件中的每一行数据,调用子程序进行计算,可是我并不知道这个文件有多少行,这段程序应该怎么写,请大家帮忙...
program main
implicit none
integer i, nrow ! nrow是文件的行数
character*10 atomname
open(1,file='co2.gro',status='unknown')
do i=1, nrow !读取文件中的每一行数据,可是我并不知道这个nrow的具体数值.
read(1,*) atomname,x(i),y(i),z(i)
if (atomname .eq. 'cb') then
call sub(x(i),y(i),z(i))
请大家帮忙,另外我想读取每一行数据后,调用子程序进行运算,我想知道把文件中的每一行数值赋值给子程序sub(x,y,z),像我这样写可以吗??
回复此楼
迷茫在知识的海洋里,需要你的指导。thankyou
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):谢谢参与应助! 11-17 16:55
可以这么写:
L=1
10  CONTINUE
READ(UNIT, *,END=120) A(L),B(L)
CALL SUB(A(L),B(L))
L=L+1
GOTO 10
120  CONTINUE
2楼2009-11-17 16:19:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

读

至尊木虫 (文坛精英)

会冒泡之超级潜水员

文献杰出贡献

senlia(金币+0,VIP+0):偶尔用用goto 其实满好的 比用其它语句代替反而要明白些 11-17 21:18
少用GOTO
3楼2009-11-17 16:51:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

引用回帖:
Originally posted by maomao1210 at 2009-11-17 16:19:
可以这么写:
L=1
10  CONTINUE
READ(UNIT, *,END=120) A(L),B(L)
CALL SUB(A(L),B(L))
L=L+1
GOTO 10
120  CONTINUE

我是新手 能不能详细的说一下,另外这里的END=120是什么意思,有点晕,看了这段
迷茫在知识的海洋里,需要你的指导。thankyou
4楼2009-11-17 17:02:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★
小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by 读 at 2009-11-17 16:51:
少用GOTO

少用不是不用,不然咋不直接把这个功能去掉呢?哈哈。
阁下给个妙招呀。
5楼2009-11-17 19:35:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

senlia

木虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1,VIP+0):辛苦了! 11-17 23:57
引用回帖:
Originally posted by tpp001 at 2009-11-17 17:02:

我是新手 能不能详细的说一下,另外这里的END=120是什么意思,有点晕,看了这段

如果不用 end=120 这样的参数设置 那么如果读文件读到数据没有了还往下读的话就会出错 但是如果用了 那就表示 如果读文件出错了 就跳到120指定的语句
书到用时方恨少, 天涯何处无芳草.
6楼2009-11-17 20:25:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★
小木虫(金币+0.5):给个红包,谢谢回帖交流
你这样不行的
并没有判断是否到达文件末尾。这样写和直接用死循环没有区别。
引用回帖:
Originally posted by maomao1210 at 2009-11-17 16:19:
可以这么写:
L=1
10  CONTINUE
READ(UNIT, *,END=120) A(L),B(L)
CALL SUB(A(L),B(L))
L=L+1
GOTO 10
120  CONTINUE

7楼2009-11-18 13:03:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
nono2009(金币+2,VIP+0):谢谢应助! 11-18 13:21
使用函数EOF。 eof(file_id)如果为真则说明到达文件末尾了,就不读了。
下面是编译器手册上的说明和范例:

EOF

Inquiry Intrinsic Function (Generic): Checks whether a file is at or beyond the end-of-file record.
Syntax

result = EOF (unit)

unit
       

(Input) Must be of type integer. It represents a unit specifier corresponding to an open file. It cannot be zero unless you have reconnected unit zero to a unit other than the screen or keyboard.
Results

The result type is default logical. The value of the result is .TRUE. if the file connected to unit is at or beyond the end-of-file record; otherwise, .FALSE..
Example

! Creates a file of random numbers, reads them back

REAL x, total

INTEGER count

OPEN (1, FILE = 'TEST.DAT')

DO I = 1, 20

CALL RANDOM_NUMBER(x)

WRITE (1, '(F6.3)') x * 100.0

END DO

CLOSE(1)

OPEN (1, FILE = 'TEST.DAT')

DO WHILE (.NOT. EOF(1))

count = count + 1

READ (1, *) value

total = total + value

END DO

100 IF ( count .GT. 0) THEN

WRITE (*,*) 'Average is: ', total / count

ELSE

WRITE (*,*) 'Input file is empty '

END IF

STOP

END
See Also
ENDFILE
BACKSPACE
REWIND
引用回帖:
Originally posted by tpp001 at 2009-11-17 16:08:
新手求助!!
我要写一段程序,读取文件中的每一行数据,调用子程序进行计算,可是我并不知道这个文件有多少行,这段程序应该怎么写,请大家帮忙...
program main
implicit none
integer i, nrow ! nrow是文件的行数 ...

8楼2009-11-18 13:05:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
nono2009(金币+2,VIP+0):谢谢应助! 11-18 13:21
program main
implicit none
integer i, nrow ! nrow是文件的行数
character*10 atomname
open(1,file='co2.gro',status='unknown')
i=1
do while (.not. eof(1))
read(1,*) atomname,x(i),y(i),z(i)
if (atomname .eq. 'cb') then
call sub(x(i),y(i),z(i))
i=i+1
end do


end program
没有测试过,自己试试吧。
引用回帖:
Originally posted by tpp001 at 2009-11-17 16:08:
新手求助!!
我要写一段程序,读取文件中的每一行数据,调用子程序进行计算,可是我并不知道这个文件有多少行,这段程序应该怎么写,请大家帮忙...
program main
implicit none
integer i, nrow ! nrow是文件的行数 ...

[ Last edited by tjyl on 2009-11-18 at 13:10 ]
9楼2009-11-18 13:08:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★
小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by tjyl at 2009-11-18 13:03:
你这样不行的
并没有判断是否到达文件末尾。这样写和直接用死循环没有区别。


你试了嘛?呵呵,咋知道不行呢?
10楼2009-11-18 13:19:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tpp001 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 极限拉扯,如何抉择 +11 Isak0320 2026-10-12 15/750 2026-10-14 21:55 by 猫鱼不是鱼
[硕博家园] 中科院海洋所招收海洋材料相关领域博士研究生及研究助理 +3 sujiner 2026-10-08 4/200 2026-10-14 20:40 by qicaiyun
[论文投稿] 二审4个多月了还是Awaiting Reviewer Scores 10+3 纳斯达克ML 2026-10-11 4/200 2026-10-14 17:30 by babero
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +8 wangyl_123 2026-10-10 13/650 2026-10-14 15:12 by zuesli
[教师之家] 课题组会帮你通过考核么? +4 好运来~9527 2026-10-10 7/350 2026-10-13 08:41 by xli1984
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +6 13108017953 2026-10-08 6/300 2026-10-12 20:07 by w3w3y3
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见