24小时热门版块排行榜    

查看: 1264  |  回复: 3
本帖产生 1 个 程序强帖 ,点击这里进行查看

onexf766

木虫 (正式写手)


[交流] 【求助】从文件读入数组遇到困难

文件A中第一行有n个数,另一文件B中第一行有m个数。(其中n,m<100)
我要分别将上面的文件读入另一个文件C,我用下面的遇到困难:
INTEGER num1(100),num2(100)
OPEN (20,FILE="A.txt" )
OPEN (21,FILE="B.txt" )
OPEN (22,FILE="C.txt" )
READ(20,*)(numb1(i),i=1,n)
READ(21,*)(numb2(i),i=1,m)
WRITE(22,*)(numb(i),i=1,n)
WRITE(22,*)(numb(i),i=1,m)
END

现在的问题是读入的数据个数如果和数组的大小不等的话,就无法读入。
由于类似文件很多,不要人为的读入n或m的值,如何办?

想过用动态数组,也没能搞定。
INTEGER, allocatable::numb(; ! 声明动态数组,可以是多维的,类似a(:,:,
allocate(numb(50));        ! 给动态数组分配内存
numb(50)=1.0;              ! 操作和平常的数组一样
deallocate(numb);


请高手贴出具体的程序解决,诚盼!!!!!

[ Last edited by onexf766 on 2010-12-25 at 20:43 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★ ★
余泽成(金币+3):谢谢参与应助! 2010-12-31 16:39:29
onexf766(金币+20): 不错,能给解释下不? 2011-04-09 10:59:49
关于读数据的部分,可参考下面的代码:
CODE:
      PROGRAM MAIN
      CHARACTER*265 LINE
      INTEGER NUM1(100)
      OPEN (20,FILE="AA.TXT" )
      READ(20,'(A)')LINE
      READ(LINE, *, END = 20) (NUM1(I), I = 1,100)
20    CONTINUE      
      PRINT *, I
      WRITE(*,*) (NUM1(J), J = 1,I-1)
      END

2楼2010-12-25 22:24:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaooming

新虫 (初入文坛)


可以看看这个

★ ★ ★
余泽成(金币+3):谢谢参与应助! 2010-12-31 16:39:38
onexf766(金币+4): xx! 2011-04-09 11:00:00
在附件中
3楼2010-12-29 09:31:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
onexf766(金币+6): 非常谢谢!呵呵 2011-04-09 18:01:49
余泽成(程序强帖+1): 2011-04-20 22:43:28
引用回帖:
不错,能给解释下不?

CODE:
      PROGRAM MAIN
      CHARACTER*265 LINE
      INTEGER NUM1(100)
      OPEN (20,FILE="AA.TXT" )
      READ(20,'(A)')LINE
      READ(LINE, *, END = 20) (NUM1(I), I = 1,100)
20    CONTINUE      
      PRINT *, I
      WRITE(*,*) (NUM1(J), J = 1,I-1)
      END

这里关键的是下面两行
CODE:
      READ(20,'(A)')LINE
      READ(LINE, *, END = 20) (NUM1(I), I = 1,100)

第一行很容易理解,就是从文件中读入一行,以字符串的形式读入,由于你的一行中全部是数值,所以,我们可以用 Fortran 的内部文件机制解决数据的读取问题。这就是第二行的代码。在第二行中,LINE 不再是一个字符串,而是一个内部文件,这个文件的内容就是前一行读入的那个字符串。END 表示遇到文件尾部时的处理方式,在这里,遇到尾部就跳到标号为 20 的行。由于你问题中说到数据不超过 100,所以我就设了后面读入100个数,比如你的数据是 70 个,当读第 71 个数据时,其实已经是尾部了,因此,就直接跳到标号为 20  的行了……

大概就是这个样子的……
4楼2011-04-09 11:19:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 onexf766 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +5 Liwangman 2026-03-15 5/250 2026-03-16 17:10 by 我的船我的海
[考研] 0703化学调剂 +6 妮妮ninicgb 2026-03-15 9/450 2026-03-16 16:40 by houyaoxu
[考研] 283求调剂 +10 小楼。 2026-03-12 14/700 2026-03-16 16:08 by 13811244083
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
[考研] 材料工程327求调剂 +3 xiaohe12w 2026-03-11 3/150 2026-03-14 20:20 by ms629
[考研] 328求调剂 +3 5201314Lsy! 2026-03-13 6/300 2026-03-14 15:31 by hyswxzs
[考研] 267一志愿南京工业大学0817化工求调剂 +5 SUICHILD 2026-03-12 5/250 2026-03-14 14:53 by jean5056
[考研] 【0703化学调剂】-一志愿华中师范大学-六级475 +5 Becho359 2026-03-11 5/250 2026-03-14 11:35 by 哦哦123
[考研] 一志愿湖师大化学289求调剂 +6 XMCMM3.14159 2026-03-10 6/300 2026-03-14 00:28 by JourneyLucky
[考研] 321求调剂 +3 CUcat 2026-03-10 3/150 2026-03-14 00:25 by JourneyLucky
[考研] 337一志愿华南理工0805材料求调剂 +7 mysdl 2026-03-11 9/450 2026-03-13 22:43 by JourneyLucky
[考研] 0703化学调剂 +4 快乐的香蕉 2026-03-11 4/200 2026-03-13 22:41 by JourneyLucky
[考研] 工科,求调剂 +3 我887 2026-03-11 3/150 2026-03-13 21:39 by JourneyLucky
[考研] 26调剂/材料科学与工程/总分295/求收留 +9 2026调剂侠 2026-03-12 9/450 2026-03-13 20:46 by 18595523086
[考研] 289求调剂 +3 李政莹 2026-03-12 3/150 2026-03-13 11:02 by 求调剂zz
[考研] 070303一志愿西北大学学硕310找调剂 +3 d如愿上岸 2026-03-13 3/150 2026-03-13 10:43 by houyaoxu
[考研] 材料专硕274一志愿陕西师范大学求调剂 +4 薛云鹏 2026-03-13 4/200 2026-03-13 10:40 by 学员8dgXkO
[考研] 0857环境调剂 +5 熠熠_11 2026-03-10 5/250 2026-03-11 10:59 by wang_dand
[考研] 收调剂 +7 调剂的考研学生 2026-03-10 7/350 2026-03-10 17:57 by 麦茶汤圆
[硕博家园] 木虫好像不热闹了,是不是? +4 偏振片 2026-03-10 4/200 2026-03-10 09:51 by longwave
信息提示
请填处理意见