关于使用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
大概率是你的数据有问题,比如没有用分隔符隔开,或者数据量不足等等,最好把报错给出来 本帖最后由 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:}现在还没搞明白为什么
检查txt的编码格式,用ansi li913 发表于 2023-2-13 14:55
检查txt的编码格式,用ansi
谢谢大佬的建议,改用了,好像是能多输入两行了,但是再多读取数据就又报错了{:4_90:},大概要读取个20行的数据
页:
[1]