找回密码
 注册
Simdroid-非首页
查看: 226|回复: 6

[3. Fortran] 读文件问题?!

[复制链接]
发表于 2005-7-8 15:53:29 | 显示全部楼层 |阅读模式 来自 北京
数据文件(a.0)如下:

NEQ,NX,NY,NSTEN
3 20 53 4
COEF. MATRIX CC(NEQ*NEQ,(NXX+2)*(NYY+2))
((CC(K,I,J),K=1,9),I=1,im+2),j=1,jm+2)
  1.  0.  0.  0.  1.  0.  0.  0.  1.
  1.  0.  0.  0.  1.  0.  0.  0.  1.
  1.  0.  0.  0.  1.  0.  0.  0.  1.    (部分忽略)

51.7351588 -0.0237233664 -0.000252668768 -0.0237233664  49.6040083  0.
-0.000252668768  0.  3859.02479
  51.7257063 -0.0237674169 -0.000253089232 -0.0237674169  49.6042068  0.
-0.000253089232  0.  3845.3221  (要读入的)

0. 0. 0.

0. 0. 0. (忽略)

51.7351588 -0.0237233664 -0.000252668768 -0.0237233664  49.6040083  0.
-0.000252668768  0.  3859.02479
  51.7257063 -0.0237674169 -0.000253089232 -0.0237674169  49.6042068  0.
-0.000253089232  0.  3845.3221 (要读入的)

高手帮忙写一下程序!谢谢!
发表于 2005-7-9 11:11:20 | 显示全部楼层 来自 黑龙江哈尔滨

Re:读文件问题?!

Simdroid开发平台
看我签名,;)
 楼主| 发表于 2005-7-9 16:05:31 | 显示全部楼层 来自 北京

Re:读文件问题?!

program main
      double precision  a, b
  open(1,file='input.txt')
      open(2,file='result.txt')
     
      do i=1,3
      read(1,"(1x,f14.4,1x,f14.4)" )a, b
  write(2,"(1x,f14.4,1x,f14.4)")a, b
  enddo

      close(1)
  close(2)
      
      end
input.txt文件如下:
1.0 2.0
2.0 3.0
3.0 4.0
编译的时候出错:
  1. forrtl: severe (64): input conversion error, unit 1, file E:\program\fortran pro
  2. gram\read data3\hua.txt
  3. Image              PC        Routine            Line        Source
  4. test1.exe          004091E9  Unknown               Unknown  Unknown
  5. test1.exe          0040901B  Unknown               Unknown  Unknown
  6. test1.exe          00408224  Unknown               Unknown  Unknown
  7. test1.exe          00408659  Unknown               Unknown  Unknown
  8. test1.exe          00404ED1  Unknown               Unknown  Unknown
  9. test1.exe          0040421F  Unknown               Unknown  Unknown
  10. test1.exe          0040110D  Unknown               Unknown  Unknown
  11. test1.exe          00431429  Unknown               Unknown  Unknown
  12. test1.exe          00426C34  Unknown               Unknown  Unknown
  13. kernel32.dll       7C816D4F  Unknown               Unknown  Unknown
  14. Incrementally linked image--PC correlation disabled.
  15. Press any key to continue
复制代码
但是如果把read语句改为read(1,*) a,b 结果就是正确的啦. 为啥?
 楼主| 发表于 2005-7-9 16:55:23 | 显示全部楼层 来自 北京

Re:读文件问题?!

发现read(unit,'(/n)')语句错误,read(unit,'(n/)')也是语句错误.

看我的程序:
     program main
      double precision  a(6), b(3)
  open(1,file='input.txt')
      open(2,file='result.txt')
      do i=1,3       %次数有问题. 有六(3的2倍,别的也一样)行未读.从第7行开始读的.  怎么改才能从第7行开始读??
    read(1,'(/)')
    enddo

      do i=1,2
      read(1,*)(a(j),j=1,6)
    read(1,*)(b(j),j=1,3)
     write(2,*) (a(j),j=1,6)
     write(2,*)(b(j),j=1,3)
    enddo  
      close(1)
    close(2)
      
      end
input.txt:
NEQ,NX,NY,NSTEN
3 20 53 4
COEF. MATRIX CC(NEQ*NEQ,(NXX+2)*(NYY+2))
((CC(K,I,J),K=1,9),I=1,im+2),j=1,jm+2)
1. 0. 0. 0. 1. 0. 0. 0. 1.
1. 0. 0. 0. 1. 0. 0. 0. 1.
1. 0. 0. 0. 1. 0. 0. 0. 1.  
51.7351588 -0.0237233664 -0.000252668768 -0.0237233664 49.6040083 0.
-0.000252668768 0. 3859.02479
51.7257063 -0.0237674169 -0.000253089232 -0.0237674169 49.6042068 0.
-0.000253089232 0. 3845.3221  
0. 0. 0.
0. 0. 0.   
52.7351588 -1.0237233664 -1.000252668768 -1.0237233664 48.6040083 1.
-1.000252668768 1. 4859.02479
52.7257063 -1.0237674169 -1.000253089232 -1.0237674169 48.6042068 1.
-1.000253089232 1. 4845.3221
result.txt
  1.00000000000000       0.000000000000000E+000  0.000000000000000E+000
  0.000000000000000E+000   1.00000000000000       0.000000000000000E+000
   51.7351588000000      -2.372336640000000E-002 -2.526687680000000E-004
-2.526687680000000E-004  0.000000000000000E+000   3859.02479000000     
   51.7257063000000      -2.376741690000000E-002 -2.530892320000000E-004
-2.530892320000000E-004  0.000000000000000E+000   3845.32210000000
 楼主| 发表于 2005-7-9 20:57:37 | 显示全部楼层 来自 北京

Re:读文件问题?!

用read(uint,*)跨一行就可以啦.
发表于 2005-7-10 11:32:17 | 显示全部楼层 来自 大连理工大学

Re:读文件问题?!

read(1,"(1x,f14.4,1x,f14.4)" )a, b
  write(2,"(1x,f14.4,1x,f14.4)")a, b

上面这两句的格式语句中的双引号应该为单引号''
读数据用自由格式更方便。
read(1,'(*,*)' )a, b
  write(2,'(1x,f14.4,1x,f14.4)')a, b
 楼主| 发表于 2005-7-10 15:59:33 | 显示全部楼层 来自 北京

Re:读文件问题?!

单引号和双引号没什么关系,改成单引号还是不行.错误一样.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 01:24 , Processed in 0.047572 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表