sleepy036 发表于 2023-2-11 15:45:10

关于使用OPEN的遇到读写问题

使用do循环来轮流读取txt的数据

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)结束{:4_90:},有现成的数据读取,手动码太麻烦了,这个是OPEN的问题吗{:4_90:}编译器用的是IVF

Transpose 发表于 2023-2-11 18:54:28

大概率是你的数据有问题,比如没有用分隔符隔开,或者数据量不足等等,最好把报错给出来

sleepy036 发表于 2023-2-13 09:42:33

本帖最后由 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

{:4_90:}数据是这样子的,然后只要输入感叹号那行以后就会报错:
会提示没有为 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   00007FFC7FC7B167Unknown               UnknownUnknown
libifcoremdd.dll   00007FFC7FCE00E5Unknown               UnknownUnknown
libifcoremdd.dll   00007FFC7FCDEF9EUnknown               UnknownUnknown
读取.exe         00007FF601B91118MAIN__                     29璇诲彇.f90
读取.exe         00007FF601B9182EUnknown               UnknownUnknown
读取.exe         00007FF601B944C9Unknown               UnknownUnknown
读取.exe         00007FF601B943EEUnknown               UnknownUnknown
读取.exe         00007FF601B942AEUnknown               UnknownUnknown
读取.exe         00007FF601B9453EUnknown               UnknownUnknown
KERNEL32.DLL       00007FFD0DA326BDUnknown               UnknownUnknown
ntdll.dll          00007FFD0F22DFB8Unknown               UnknownUnknown
29行是 read(1,*) ncoil

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

li913 发表于 2023-2-13 14:55:57

检查txt的编码格式,用ansi

sleepy036 发表于 2023-2-13 15:43:08

li913 发表于 2023-2-13 14:55
检查txt的编码格式,用ansi
谢谢大佬的建议,改用了,好像是能多输入两行了,但是再多读取数据就又报错了{:4_90:},大概要读取个20行的数据
页: [1]
查看完整版本: 关于使用OPEN的遇到读写问题