读取txt文件中的数组再简单输出,报错说前后格式不匹配
PROGRAM MAINIMPLICIT REAL*8 (A-Z)
INTEGER::i,j,N,ioerr
PARAMETER (N=4)
REAL*8::A(N,N),b(N),x(N)
OPEN(1,FILE='READ.TXT',FORM='FORMATTED',IOSTAT=IOERR)
READ(1)((A(i,j),j=1,N),i=1,N)
READ(1)(b(i),i=1,N)
OPEN(2,FILE='WRITE.TXT')
WRITE(2,10) X
10FORMAT(4(/F12.8))
END PROGRAM MAIN
确实只是读数据再输出而已,没有进行任何计算,错误提示forrtl:severe<256>:unformatted I/O to unit open for formatted transfers
难道是txt文件输入数据的时候需要特别的格式吗?我只是单纯用空格把数组中的数据分隔开了而已。
希望能有前辈帮忙解答一下,我这问题出在哪里?
你的问题在于没有显式书写读入格式
program mainimplicit noneinteger(kind=4),parameter :: n = 4
real(kind=8) :: a(n,n),b(n),x(n)
integer(kind=4) :: i, j, ioerr
open(100,file='READ.TXT')
read(100,*)
do i = 1,n
read(100,*)(a(i,j),j=1,n)
end do
read(100,*)
do i = 1,n
read(100,*)b(i)
end do
open(200,file='WRITE.txt')
do i = 1, n
write(200,"(*(f12.8,1x))")(a(i,j),j=1, n)
end do
write(200,"(/,4(f12.8,/))")b
close(100)
close(200)
end program main
2629416609@qq.c 发表于 2019-10-22 18:33
program mainimplicit none
integer(kind=4),parameter :: n = 4
real(kind=8) :: a(n, ...
我按照你的意思改了,但是仍然有同样的问题,先谢谢你的热情帮助!感激!(回头看才发现有一些没用的定义忘了删掉,实在是不好意思。)
修改之后的代码是这样的
PROGRAM MAIN
IMPLICIT REAL*8 (A-Z)
INTEGER::i,N,ioerr
PARAMETER (N=4)
REAL*8::b(N)
OPEN(11,FILE='READ.TXT',IOSTAT=IOERR)
DO i=1,N
READ(11) b(i)
END DO
OPEN(12,FILE='WRITE.TXT')
DO i=1,N
WRITE(12,10) b(i)
10 FORMAT(4(/F12.8))
END DO
CLOSE (11)
CLOSE (12)
END PROGRAM MAIN
简化了一下,只对一列四个数字进行读取和输出,还是找不到问题出在哪,能再帮我看看么?
您需要确定从哪一行开始读,跳到那一行的方法不唯一
这想必是 发表于 2019-10-22 20:08我按照你的意思改了,但是仍然有同样的问题,先谢谢你的热情帮助!感激!(回头看才发现有一些没用的定义 ...
program test
implicit none
integer(kind=4),parameter:: n = 4
real(kind=8) :: b(n)
integer(kind=4) :: i
open(100,file='READ.txt')
open(200,file='WRITE.txt')
!do i = 1, 5
! read(100,*)
!end do
read(100,"(4(/))")
do i = 1,4
read(100,*)b(i)
end do
write(*,"(4(g0,/))")b
write(200,"(4(g0,/))")b
end program test
2629416609@qq.c 发表于 2019-10-22 20:45
program test
implicit none
integer(kind=4),parameter:: n = 4
非常感谢你的耐心解答,现在确实可以了,你的代码还有个小地方我不太明白,输出语句中的g0是什么意思呢?通用编辑符吗?为什么域宽是0呢?
页:
[1]