Fortran Coder

标题: 关于使用OPEN的遇到读写问题 [打印本页]

作者: sleepy036    时间: 2023-2-11 15:45
标题: 关于使用OPEN的遇到读写问题
使用do循环来轮流读取txt的数据
[Fortran] 纯文本查看 复制代码

program $

    implicit none

    double precision a(30),b(30),c(30),d(30) !dimensions of coils: m
      common /coils/a,b,c,d
      double precision e(30)
        common /e/e
    integer ncoil
    integer icoil
   ! character unit
    common /nc/ncoil

    open(1,file='1.txt',status='old')
    read(1,*) ncoil
    !read(1,*) unit
    do icoil=1,ncoil !get the dimensions of each coil
         read(1,*)c(icoil),d(icoil),b(icoil),a(icoil),e(icoil)
        end do
    close(1)
    pause
    end program $


代码如上,用来进行读取的,发现txt放入六行数据(do循环五次)或者中间数据有负值就会报错导致中断,放少就能正常运行,然后自己手动码不使用OPEN也能码到do循环(ncoil=20)结束,有现成的数据读取,手动码太麻烦了,这个是OPEN的问题吗编译器用的是IVF

作者: Transpose    时间: 2023-2-11 18:54
大概率是你的数据有问题,比如没有用分隔符隔开,或者数据量不足等等,最好把报错给出来
作者: sleepy036    时间: 2023-2-13 09:42
本帖最后由 sleepy036 于 2023-2-13 14:17 编辑
Transpose 发表于 2023-2-11 18:54
大概率是你的数据有问题,比如没有用分隔符隔开,或者数据量不足等等,最好把报错给出来 ...

1.TXT:
20
0.499618        0.5198        0.516356        0.767236        1568
0.499626        0.535626        0.220292        0.374852        1725
0.499552        0.525472        0.014167        0.173207        1278
0.499552        0.525472        0.173207        0.014167        1278
!0.499626        0.535626        0.374852        0.220292        1725

数据是这样子的,然后只要输入感叹号那行以后就会报错:
会提示没有为 libifcoremdd.dll 加载的符号文件

forrtl: severe (59): list-directed I/O syntax error, unit 1, file D:\C++\读取\1.txt
Image              PC                Routine            Line        Source
libifcoremdd.dll   00007FFC7FC7B167  Unknown               Unknown  Unknown
libifcoremdd.dll   00007FFC7FCE00E5  Unknown               Unknown  Unknown
libifcoremdd.dll   00007FFC7FCDEF9E  Unknown               Unknown  Unknown
读取.exe           00007FF601B91118  MAIN__                     29  璇诲彇.f90
读取.exe           00007FF601B9182E  Unknown               Unknown  Unknown
读取.exe           00007FF601B944C9  Unknown               Unknown  Unknown
读取.exe           00007FF601B943EE  Unknown               Unknown  Unknown
读取.exe           00007FF601B942AE  Unknown               Unknown  Unknown
读取.exe           00007FF601B9453E  Unknown               Unknown  Unknown
KERNEL32.DLL       00007FFD0DA326BD  Unknown               Unknown  Unknown
ntdll.dll          00007FFD0F22DFB8  Unknown               Unknown  Unknown
29行是 read(1,*) ncoil

没报错的话查看局部变量是有读取成功的现在还没搞明白为什么


作者: li913    时间: 2023-2-13 14:55
检查txt的编码格式,用ansi
作者: sleepy036    时间: 2023-2-13 15:43
li913 发表于 2023-2-13 14:55
检查txt的编码格式,用ansi

谢谢大佬的建议,改用了,好像是能多输入两行了,但是再多读取数据就又报错了,大概要读取个20行的数据




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2