module typedef
type student
integer chinese,english ,math
end type
end module
program ex0907
use typedef
implicit none
type(student)::s
character(len=80)::filename="data.txt"
integer,parameter::fileid=10
logical alive
integer ::error
integer::no
inquire(file=filename,exist=alive)
if(.not.alive)then
write(*,*)trim(filename),"doesn't exit"
stop
end if
open (fileid,file=filename)
do while(.true.)
read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
if(error/=0)exit
write(*,"(I2'号 中文:'I3'英文:'I3'数学:'I3)")no,s
end do
close(fileid)
stop
end
下载.png (36.18 KB, 下载次数: 208)
fcode 发表于 2023-10-21 10:16
建议
read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
改为
数学: 3语文: 2 英语: 1
Transpose 发表于 2023-10-21 14:33
i3代表数字占三个位置,冒号后面必须长度是3,不足的可以用空格代替 例如
数学 ...
module typedef
type student
integer chinese,english ,math
end type
end module
program ex0907
use typedef
implicit none
type(student)::s
character(len=80)::filename="data.txt"
integer,parameter::fileid=10
logical alive
integer ::error
integer::no
inquire(file=filename,exist=alive)
if(.not.alive)then
write(*,*)trim(filename),"doesn't exit"
stop
end if
open (fileid,file=filename)
do while(.true.)
read(fileid,"(5XI2,/,5XI3,6XI3,6XI3)",iostat=error)no,s
if(error/=0)exit
write(*,"(I2'号 中文:'I3'英文:'I3'数学:'I3)")no,s
end do
close(fileid)
stop
end
DDHH 发表于 2023-10-21 10:36
书上为啥操作不了呢?我听网友讲现在一个中文字体代表3个字节,所以5x这里有问题,可是我试了还是没有用 ...
DDHH 发表于 2023-10-21 10:36
书上为啥操作不了呢?我听网友讲现在一个中文字体代表3个字节,所以5x这里有问题,可是我试了还是没有用 ...
fcode 发表于 2023-10-21 19:19
一个中文有几个字符,与具体的编码有关。并不是固定不变的。
建议不要用格式符读取,直接改用 * 表控格式 ...
DDHH 发表于 2023-10-23 09:58
谢谢,但是按照您的代码还是没成功,不知道哪里出问题了
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |